001package com.khubla.pragmatach.plugin.adminapp;
002
003import java.io.InputStream;
004import java.util.Properties;
005
006import com.khubla.pragmatach.framework.annotation.Controller;
007import com.khubla.pragmatach.framework.annotation.Route;
008import com.khubla.pragmatach.framework.annotation.View;
009import com.khubla.pragmatach.framework.api.PragmatachException;
010import com.khubla.pragmatach.framework.api.Response;
011
012/**
013 * @author tome
014 */
015@Controller(name = "pragmatachShowApplicationController")
016@View(view = "pragmatach/admin/application.html")
017public 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}