001    package com.khubla.pragmatach.plugin.adminapp;
002    
003    import java.io.InputStream;
004    import java.util.Properties;
005    
006    import com.khubla.pragmatach.framework.annotation.Controller;
007    import com.khubla.pragmatach.framework.annotation.Route;
008    import com.khubla.pragmatach.framework.annotation.View;
009    import com.khubla.pragmatach.framework.api.PragmatachException;
010    import com.khubla.pragmatach.framework.api.Response;
011    
012    /**
013     * @author tome
014     */
015    @Controller(name = "pragmatachShowApplicationController")
016    @View(view = "pragmatach/admin/application.html")
017    public class ShowApplicationController extends SecuredAdminController {
018            /**
019             * application version from maven pom
020             */
021            private String applicationVersion;
022            /**
023             * build date from maven pom
024             */
025            private String buildDate;
026    
027            private String findApplicationBuildDate() throws PragmatachException {
028                    try {
029                            InputStream is = null;
030                            try {
031                                    is = ShowApplicationController.class
032                                                    .getResourceAsStream("/version.properties");
033                                    if (null != is) {
034                                            final Properties properties = new Properties();
035                                            properties.load(is);
036                                            return properties.getProperty("maven.builddate");
037                                    }
038                                    return null;
039                            } finally {
040                                    if (null != is) {
041                                            is.close();
042                                    }
043                            }
044                    } catch (final Exception e) {
045                            throw new PragmatachException(
046                                            "Exception in findApplicationBuildDate", e);
047                    }
048            }
049    
050            private String findApplicationVersion() throws PragmatachException {
051                    try {
052                            InputStream is = null;
053                            try {
054                                    is = ShowApplicationController.class
055                                                    .getResourceAsStream("/version.properties");
056                                    if (null != is) {
057                                            final Properties properties = new Properties();
058                                            properties.load(is);
059                                            return properties.getProperty("maven.version");
060                                    }
061                                    return null;
062                            } finally {
063                                    if (null != is) {
064                                            is.close();
065                                    }
066                            }
067                    } catch (final Exception e) {
068                            throw new PragmatachException(
069                                            "Exception in findApplicationVersion", e);
070                    }
071            }
072    
073            public String getApplicationVersion() {
074                    return applicationVersion;
075            }
076    
077            public String getBuildDate() {
078                    return buildDate;
079            }
080    
081            @Route(uri = "/pragmatach/admin/application")
082            public Response render() throws PragmatachException {
083                    applicationVersion = findApplicationVersion();
084                    buildDate = findApplicationBuildDate();
085                    return super.render();
086            }
087    
088            public void setApplicationVersion(String applicationVersion) {
089                    this.applicationVersion = applicationVersion;
090            }
091    
092            public void setBuildDate(String buildDate) {
093                    this.buildDate = buildDate;
094            }
095    }