├── .classpath ├── .gitignore ├── .project ├── .settings ├── com.springsource.sts.config.flow.prefs ├── org.eclipse.core.resources.prefs ├── org.eclipse.jdt.core.prefs ├── org.eclipse.m2e.core.prefs ├── org.eclipse.wst.common.component ├── org.eclipse.wst.common.project.facet.core.xml ├── org.eclipse.wst.validation.prefs ├── org.springframework.ide.eclipse.beans.core.prefs └── org.springframework.ide.eclipse.core.prefs ├── .springBeans ├── README.md ├── SpringConfiguration.MD ├── pom.xml └── src ├── main ├── java │ └── com │ │ └── javastud │ │ └── springmvcweb │ │ ├── HomeController.java │ │ ├── controller │ │ ├── FileUploadDownloadController.java │ │ ├── StudentController.java │ │ └── StudentRestController.java │ │ ├── dao │ │ ├── StudentDao.java │ │ ├── StudentDaoImpl.java │ │ ├── UserDao.java │ │ └── UserDaoImpl.java │ │ ├── designpatterns │ │ ├── builder │ │ │ ├── BuilderPatternExample.java │ │ │ ├── Employee.java │ │ │ └── User.java │ │ ├── decorator │ │ │ ├── DecoratorPatterenTest.java │ │ │ ├── Email.java │ │ │ ├── EmailDecorator.java │ │ │ ├── EmailSender.java │ │ │ ├── ExternalEmailDecorator.java │ │ │ ├── IEmail.java │ │ │ └── SecureEmailDecorator.java │ │ ├── factory │ │ │ ├── Bank.java │ │ │ ├── BankFactory.java │ │ │ ├── BankType.java │ │ │ ├── FactoryPatterenExample.java │ │ │ ├── Global.java │ │ │ └── Nabil.java │ │ └── singleton │ │ │ ├── Company.java │ │ │ └── SingletonPatternExample.java │ │ ├── java8 │ │ ├── datatime │ │ │ └── Java8DateTimeTest.java │ │ ├── funcinterface │ │ │ ├── Bank.java │ │ │ ├── FunctionalInterfaceTest.java │ │ │ └── Global.java │ │ └── stream │ │ │ ├── LambdaStreamCollectorExample.java │ │ │ ├── Person.java │ │ │ └── StreamTest.java │ │ ├── model │ │ ├── Student.java │ │ └── User.java │ │ └── service │ │ ├── FileStorageService.java │ │ └── ServiceUtils.java ├── resources │ ├── log4j.xml │ └── startbootstrap-simple-sidebar-gh-pages.zip └── webapp │ ├── WEB-INF │ ├── spring │ │ ├── appServlet │ │ │ └── servlet-context.xml │ │ └── root-context.xml │ ├── views │ │ ├── about.jsp │ │ ├── angularSimpleApp.html │ │ ├── currency.jsp │ │ ├── fileUpload.jsp │ │ ├── footer.jsp │ │ ├── header.jsp │ │ ├── home.jsp │ │ ├── index.jsp │ │ ├── login.jsp │ │ ├── profile.jsp │ │ ├── rest.jsp │ │ ├── studentForm.jsp │ │ └── studentFormDialog.jsp │ └── web.xml │ └── resources │ ├── css │ ├── bootstrap-theme.css │ ├── bootstrap-theme.css.map │ ├── bootstrap-theme.min.css │ ├── bootstrap-theme.min.css.map │ ├── bootstrap.css │ ├── bootstrap.css.map │ ├── bootstrap.min.css │ ├── bootstrap.min.css.map │ ├── github-calendar.css │ ├── jquery.dataTables.css │ ├── simple-sidebar.css │ └── style.css │ ├── fonts │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.svg │ ├── glyphicons-halflings-regular.ttf │ ├── glyphicons-halflings-regular.woff │ └── glyphicons-halflings-regular.woff2 │ ├── img │ └── monkey_testing.jpg │ └── js │ ├── angular.js │ ├── app │ └── currencyAngularApp.js │ ├── bootstrap.js │ ├── bootstrap.min.js │ ├── github-calendar.min.js │ ├── jquery.dataTables.js │ ├── jquery.js │ └── npm.js └── test ├── java └── com │ └── javastud │ └── springmvcweb │ ├── designpatterns │ ├── factory │ │ └── BankTypeTest.java │ └── singleton │ │ └── CompanySingletonPatterenTest.java │ └── service │ ├── JUnitTestCase.java │ └── ServiceUtilsTest.java └── resources └── log4j.xml /.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | JavaStudSpringMVCWeb 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | org.eclipse.wst.common.project.facet.core.builder 15 | 16 | 17 | 18 | 19 | org.springframework.ide.eclipse.core.springbuilder 20 | 21 | 22 | 23 | 24 | org.eclipse.wst.jsdt.core.javascriptValidator 25 | 26 | 27 | 28 | 29 | org.eclipse.wst.validation.validationbuilder 30 | 31 | 32 | 33 | 34 | org.eclipse.m2e.core.maven2Builder 35 | 36 | 37 | 38 | 39 | 40 | org.springframework.ide.eclipse.core.springnature 41 | org.eclipse.jdt.core.javanature 42 | org.eclipse.m2e.core.maven2Nature 43 | org.eclipse.wst.common.project.facet.core.nature 44 | org.eclipse.wst.common.modulecore.ModuleCoreNature 45 | org.eclipse.wst.jsdt.core.jsNature 46 | 47 | 48 | -------------------------------------------------------------------------------- /.settings/com.springsource.sts.config.flow.prefs: -------------------------------------------------------------------------------- 1 | //com.springsource.sts.config.flow.coordinates\:http\://www.springframework.org/schema/batch\:/JavaStudSpringMVCWeb/src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml=\r\n 2 | eclipse.preferences.version=1 3 | -------------------------------------------------------------------------------- /.settings/org.eclipse.core.resources.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | encoding//src/main/java/com/javastud/springmvcweb/java8/funcinterface/FunctionalInterfaceTest.java=UTF-8 3 | encoding//src/main/webapp/WEB-INF/views/header.jsp=UTF-8 4 | encoding//src/main/webapp/WEB-INF/views/index.jsp=UTF-8 5 | encoding/=UTF-8 6 | -------------------------------------------------------------------------------- /.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate 4 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 5 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 6 | org.eclipse.jdt.core.compiler.compliance=1.8 7 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 8 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 9 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 10 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 11 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 12 | org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning 13 | org.eclipse.jdt.core.compiler.source=1.8 14 | -------------------------------------------------------------------------------- /.settings/org.eclipse.m2e.core.prefs: -------------------------------------------------------------------------------- 1 | activeProfiles= 2 | eclipse.preferences.version=1 3 | resolveWorkspaceProjects=true 4 | version=1 5 | -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.common.component: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.common.project.facet.core.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.validation.prefs: -------------------------------------------------------------------------------- 1 | #Fri Jun 06 17:00:12 BST 2008 2 | DELEGATES_PREFERENCE=delegateValidatorListorg.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator\=org.eclipse.wst.wsdl.validation.internal.eclipse.Validator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator\=org.eclipse.wst.xsd.core.internal.validation.eclipse.Validator; 3 | USER_BUILD_PREFERENCE=enabledBuildValidatorListorg.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator;org.eclipse.jst.jsf.validation.internal.JSPSemanticsValidator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.wst.common.componentcore.internal.ModuleCoreValidator;org.eclipse.jst.jsf.validation.internal.appconfig.AppConfigValidator;org.eclipse.jst.jsp.core.internal.validation.JSPBatchValidator;org.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.jst.jsp.core.internal.validation.JSPContentValidator;org.eclipse.jst.j2ee.internal.classpathdep.ClasspathDependencyValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator; 4 | USER_MANUAL_PREFERENCE=enabledManualValidatorListorg.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator;org.eclipse.jst.jsf.validation.internal.JSPSemanticsValidator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.wst.common.componentcore.internal.ModuleCoreValidator;org.eclipse.jst.jsf.validation.internal.appconfig.AppConfigValidator;org.eclipse.jst.jsp.core.internal.validation.JSPBatchValidator;org.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.jst.jsp.core.internal.validation.JSPContentValidator;org.eclipse.jst.j2ee.internal.classpathdep.ClasspathDependencyValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator; 5 | USER_PREFERENCE=overrideGlobalPreferencesfalse 6 | eclipse.preferences.version=1 7 | -------------------------------------------------------------------------------- /.settings/org.springframework.ide.eclipse.beans.core.prefs: -------------------------------------------------------------------------------- 1 | #Mon Oct 18 12:37:52 EDT 2010 2 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.osgi.org/xmlns/blueprint/v1.0.0= 3 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/aop= 4 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/batch= 5 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/beans= 6 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/context= 7 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/faces= 8 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/flex= 9 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/integration= 10 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/integration/file= 11 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/integration/http= 12 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/integration/httpinvoker= 13 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/integration/ip= 14 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/integration/jdbc= 15 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/integration/jms= 16 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/integration/jmx= 17 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/integration/mail= 18 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/integration/rmi= 19 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/integration/security= 20 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/integration/stream= 21 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/integration/ws= 22 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/integration/xml= 23 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/jdbc= 24 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/jee= 25 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/jms= 26 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/lang= 27 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/mvc= 28 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/osgi= 29 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/osgi-compendium= 30 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/oxm= 31 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/p= 32 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/security= 33 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/task= 34 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/tx= 35 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/util= 36 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/web-services= 37 | //org.springframework.ide.eclipse.beans.core.default.version.http\://www.springframework.org/schema/webflow-config= 38 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.osgi.org/xmlns/blueprint/v1.0.0=bp 39 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/aop=aop 40 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/batch=batch 41 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/beans=beans 42 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/context=context 43 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/faces=faces 44 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/flex=flex 45 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/integration=int 46 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/integration/file=int-file 47 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/integration/http=int-http 48 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/integration/httpinvoker=int-httpinvoker 49 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/integration/ip=int-ip 50 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/integration/jdbc=int-jdbc 51 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/integration/jms=int-jms 52 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/integration/jmx=int-jmx 53 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/integration/mail=int-mail 54 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/integration/rmi=int-rmi 55 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/integration/security=int-security 56 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/integration/stream=int-stream 57 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/integration/ws=int-ws 58 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/integration/xml=int-xml 59 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/jdbc=jdbc 60 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/jee=jee 61 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/jms=jms 62 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/lang=lang 63 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/mvc=mvc 64 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/osgi=osgi 65 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/osgi-compendium=osgix 66 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/oxm=oxm 67 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/p=p 68 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/security=sec 69 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/task=task 70 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/tx=tx 71 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/util=util 72 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/web-services=ws 73 | //org.springframework.ide.eclipse.beans.core.prefix.http\://www.springframework.org/schema/webflow-config=flow 74 | eclipse.preferences.version=1 75 | org.springframework.ide.eclipse.beans.core.default.version.check.classpath=true 76 | org.springframework.ide.eclipse.beans.core.enable.project.preferences=false 77 | org.springframework.ide.eclipse.beans.core.ignoreMissingNamespaceHandler=false 78 | org.springframework.ide.eclipse.beans.core.loadNamespaceHandlerFromClasspath=false 79 | -------------------------------------------------------------------------------- /.settings/org.springframework.ide.eclipse.core.prefs: -------------------------------------------------------------------------------- 1 | #Tue Apr 20 16:59:06 EDT 2010 2 | eclipse.preferences.version=1 3 | org.springframework.ide.eclipse.core.builders.enable.aopreferencemodelbuilder=true 4 | org.springframework.ide.eclipse.core.builders.enable.beanmetadatabuilder=true 5 | org.springframework.ide.eclipse.core.builders.enable.osgibundleupdater=false 6 | org.springframework.ide.eclipse.core.enable.project.preferences=false 7 | org.springframework.ide.eclipse.core.validator.enable.com.springsource.server.ide.manifest.core.manifestvalidator=true 8 | org.springframework.ide.eclipse.core.validator.enable.com.springsource.sts.bestpractices.beansvalidator=false 9 | org.springframework.ide.eclipse.core.validator.enable.com.springsource.sts.server.quickfix.manifestvalidator=false 10 | org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.beans.core.beansvalidator=true 11 | org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.core.springvalidator=false 12 | org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.webflow.core.validator=true 13 | org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.applicationSymbolicNameRule-com.springsource.server.ide.manifest.core.manifestvalidator=true 14 | org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.applicationVersionRule-com.springsource.server.ide.manifest.core.manifestvalidator=true 15 | org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleActivationPolicyRule-com.springsource.server.ide.manifest.core.manifestvalidator=true 16 | org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleActivatorRule-com.springsource.server.ide.manifest.core.manifestvalidator=true 17 | org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleManifestVersionRule-com.springsource.server.ide.manifest.core.manifestvalidator=true 18 | org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleNameRule-com.springsource.server.ide.manifest.core.manifestvalidator=true 19 | org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleSymbolicNameRule-com.springsource.server.ide.manifest.core.manifestvalidator=true 20 | org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleVersionRule-com.springsource.server.ide.manifest.core.manifestvalidator=true 21 | org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.exportPackageRule-com.springsource.server.ide.manifest.core.manifestvalidator=true 22 | org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.importRule-com.springsource.server.ide.manifest.core.manifestvalidator=true 23 | org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.parsingProblemsRule-com.springsource.server.ide.manifest.core.manifestvalidator=true 24 | org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.requireBundleRule-com.springsource.server.ide.manifest.core.manifestvalidator=true 25 | org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.AvoidDriverManagerDataSource-com.springsource.sts.bestpractices.beansvalidator=false 26 | org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.ImportElementsAtTopRulee-com.springsource.sts.bestpractices.beansvalidator=false 27 | org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.ParentBeanSpecifiesAbstractClassRule-com.springsource.sts.bestpractices.beansvalidator=false 28 | org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.RefElementRule-com.springsource.sts.bestpractices.beansvalidator=false 29 | org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.TooManyBeansInFileRule-com.springsource.sts.bestpractices.beansvalidator=false 30 | org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.UnnecessaryValueElementRule-com.springsource.sts.bestpractices.beansvalidator=false 31 | org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.UseBeanInheritance-com.springsource.sts.bestpractices.beansvalidator=false 32 | org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.legacyxmlusage.jndiobjectfactory-com.springsource.sts.bestpractices.beansvalidator=false 33 | org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.server.quickfix.importBundleVersionRule-com.springsource.sts.server.quickfix.manifestvalidator=false 34 | org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.server.quickfix.importLibraryVersionRule-com.springsource.sts.server.quickfix.manifestvalidator=false 35 | org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.server.quickfix.importPackageVersionRule-com.springsource.sts.server.quickfix.manifestvalidator=false 36 | org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.server.quickfix.requireBundleVersionRule-com.springsource.sts.server.quickfix.manifestvalidator=false 37 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.autowire.autowire-org.springframework.ide.eclipse.beans.core.beansvalidator=false 38 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanAlias-org.springframework.ide.eclipse.beans.core.beansvalidator=true 39 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanClass-org.springframework.ide.eclipse.beans.core.beansvalidator=true 40 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanConstructorArgument-org.springframework.ide.eclipse.beans.core.beansvalidator=true 41 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinition-org.springframework.ide.eclipse.beans.core.beansvalidator=true 42 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinitionHolder-org.springframework.ide.eclipse.beans.core.beansvalidator=true 43 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanFactory-org.springframework.ide.eclipse.beans.core.beansvalidator=true 44 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanInitDestroyMethod-org.springframework.ide.eclipse.beans.core.beansvalidator=true 45 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=true 46 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanReference-org.springframework.ide.eclipse.beans.core.beansvalidator=true 47 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.methodOverride-org.springframework.ide.eclipse.beans.core.beansvalidator=true 48 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.parsingProblems-org.springframework.ide.eclipse.beans.core.beansvalidator=true 49 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.requiredProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=false 50 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.toolAnnotation-org.springframework.ide.eclipse.beans.core.beansvalidator=false 51 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.core.springClasspath-org.springframework.ide.eclipse.core.springvalidator=false 52 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.action-org.springframework.ide.eclipse.webflow.core.validator=true 53 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.actionstate-org.springframework.ide.eclipse.webflow.core.validator=true 54 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.attribute-org.springframework.ide.eclipse.webflow.core.validator=true 55 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.attributemapper-org.springframework.ide.eclipse.webflow.core.validator=true 56 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.beanaction-org.springframework.ide.eclipse.webflow.core.validator=true 57 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.evaluationaction-org.springframework.ide.eclipse.webflow.core.validator=true 58 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.evaluationresult-org.springframework.ide.eclipse.webflow.core.validator=true 59 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.exceptionhandler-org.springframework.ide.eclipse.webflow.core.validator=true 60 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.import-org.springframework.ide.eclipse.webflow.core.validator=true 61 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.inputattribute-org.springframework.ide.eclipse.webflow.core.validator=true 62 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.mapping-org.springframework.ide.eclipse.webflow.core.validator=true 63 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.outputattribute-org.springframework.ide.eclipse.webflow.core.validator=true 64 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.set-org.springframework.ide.eclipse.webflow.core.validator=true 65 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.state-org.springframework.ide.eclipse.webflow.core.validator=true 66 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.subflowstate-org.springframework.ide.eclipse.webflow.core.validator=true 67 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.transition-org.springframework.ide.eclipse.webflow.core.validator=true 68 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.variable-org.springframework.ide.eclipse.webflow.core.validator=true 69 | org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.webflowstate-org.springframework.ide.eclipse.webflow.core.validator=true 70 | -------------------------------------------------------------------------------- /.springBeans: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1 4 | 5 | 6 | 7 | 8 | 9 | 10 | src/main/webapp/WEB-INF/spring/appServlet/spring-security.xml 11 | 12 | 13 | src/main/webapp/WEB-INF/spring/root-context.xml 14 | src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # JavaStudSpringMVCWeb [springmvcweb-boot](https://github.com/yrojha4ever/springmvcweb-boot) 2 | Spring Boot Version of this App: [springmvcweb-boot](https://github.com/yrojha4ever/springmvcweb-boot)
3 | This is annotation based on Spring and Hibernate Version 4 project. 4 | 5 | Run project using maven command: mvn clean package tomcat7:run
6 | 7 | Short Tutorial & uses:
8 | 9 | Spring JSTL: 10 | ``` 11 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 12 | <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> 13 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> 14 | <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> 15 | ``` 16 | 17 | 18 | ============File Upload:============= 19 | ```xml 20 | 1. pom.xml: 21 | 22 | 23 | commons-fileupload 24 | commons-fileupload 25 | 1.2.2 26 | compile 27 | 28 | 29 | commons-io 30 | commons-io 31 | 2.4 32 | 33 | ``` 34 | ```xml 35 | 2. servlet-context.xml 36 | 37 | 38 | 39 | ``` 40 | ```html 41 | 3. FileUpload.jsp 42 | 43 | File Upload Example: 44 | 45 |
46 | File to upload: 47 |

48 | Press here to upload the file! 49 |
50 | 51 |

52 | 53 | ``` 54 | ```java 55 | 4. In Controller: 56 | @Controller 57 | @RequestMapping("/upload") 58 | public class FileUploadController { 59 | 60 | @RequestMapping(method = RequestMethod.GET) 61 | public String index() { 62 | return "fileUpload"; 63 | } 64 | 65 | @RequestMapping(method = RequestMethod.POST) 66 | public String upload(@RequestParam("file") MultipartFile file, Model model) throws IOException { 67 | byte[] bytes; 68 | 69 | if (!file.isEmpty()) { 70 | bytes = file.getBytes(); 71 | 72 | //Write in file. 73 | FileOutputStream out = new FileOutputStream( "D:\\temp\\"+ file.getOriginalFilename() ); 74 | out.write(bytes); 75 | out.close(); 76 | } 77 | 78 | System.out.println( "Received File:" + file.getOriginalFilename() ); 79 | 80 | model.addAttribute("successMsg", "File upload Success: "+ file.getOriginalFilename()); 81 | return "fileUpload"; 82 | } 83 | } 84 | ``` 85 | 86 | ===============Spring Rest API Call=============== 87 | ```xml 88 | 1. POM.xml : Need this for json to/from object: For SPRING REST Call 89 | 90 | com.fasterxml.jackson.core 91 | jackson-core 92 | 2.5.4 93 | 94 | 95 | com.fasterxml.jackson.core 96 | jackson-databind 97 | 2.5.4 98 | 99 | ``` 100 | ```java 101 | 2. Controller: @RestController 102 | @RestController 103 | @RequestMapping("api/rest") 104 | public class StudentRestController { 105 | 106 | @Autowired 107 | private StudentDao studentDao; 108 | 109 | @RequestMapping(method = RequestMethod.GET) 110 | public ResponseEntity> index() { 111 | ResponseEntity> studList = new ResponseEntity>( studentDao.getAll(), HttpStatus.OK); 112 | return studList; 113 | } 114 | } 115 | ``` 116 | ``` 117 | 3. You need to have Jquery to send ajax rest call to server: 118 | 119 | ``` 120 | ```java 121 | 4. Create /rest to go to rest testing jsp file: 122 | 123 | @RequestMapping(value = "/rest", method = RequestMethod.GET) 124 | public String restCall() { 125 | return "rest"; 126 | } 127 | 128 | ``` 129 | 5. create rest.jsp file like this: 130 | ```html 131 | <%@ page language="java" contentType="text/html; charset=ISO-8859-1" 132 | pageEncoding="ISO-8859-1"%> 133 | 134 | 135 | 136 | 137 | Insert title here 138 | 139 | 142 | 143 | 144 | 145 |

Rest Call Example:

146 | Go To Student

147 | 148 |
149 |

150 | 151 | 152 | 164 | 165 | 166 | 167 | ``` 168 | ``` 169 | Where $.ajax is jquery Ajax server call method. 170 | content type: application/json is to modify header information from text/html to json. 171 | JSON.stringify is to convert JSON data to String. 172 | $.ajax({ 173 | type : "GET", 174 | contentType : "application/json", 175 | url : "api/rest", 176 | }).then(function(data) { 177 | $('#displayJSON').html(JSON.stringify(data)); 178 | }); 179 | 180 | It will care server api/rest url(that is rest usrl it only accept/resturn json data. 181 | ``` 182 | 183 |







184 | ======================LOG4J=====================
185 | log4j is a reliable, fast and flexible logging framework (APIs) written in Java.
186 | log4j has three main components:
187 | ``` 188 | loggers: Responsible for capturing logging information. 189 | appenders: Responsible for publishing logging information to various preferred destinations. 190 | layouts: Responsible for formatting logging information in different styles. 191 | It uses multiple levels, namely ALL, TRACE, DEBUG, INFO, WARN, ERROR and FATAL 192 | ``` 193 | **************** 194 | Log4j configuration in XML file format. (Create log4j.xml file in src/main/resources) 195 | **************** 196 | ``` 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | ``` 251 | 252 | OR> Log4j configuration in properties file format. (you can create log4j.properties file as well): 253 | 254 | ``` 255 | # Root logger option 256 | log4j.rootLogger=DEBUG, stdout, file 257 | 258 | # Redirect log messages to console 259 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender 260 | log4j.appender.stdout.Target=System.out 261 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 262 | log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 263 | 264 | # Redirect log messages to a log file, support file rolling. 265 | log4j.appender.file=org.apache.log4j.RollingFileAppender 266 | log4j.appender.file.File=C:\\log4j-application.log 267 | log4j.appender.file.MaxFileSize=5MB 268 | log4j.appender.file.MaxBackupIndex=10 269 | log4j.appender.file.layout=org.apache.log4j.PatternLayout 270 | log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 271 | ``` 272 | -------------------------------------------------------------------------------- /SpringConfiguration.MD: -------------------------------------------------------------------------------- 1 | Spring JSTL: 2 | ``` 3 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 4 | 5 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> 6 | 7 | <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> 8 | ``` 9 | 10 | 11 | ============File Upload:============= 12 | ```xml 13 | 1. pom.xml: 14 | 15 | 16 | commons-fileupload 17 | commons-fileupload 18 | 1.2.2 19 | compile 20 | 21 | 22 | commons-io 23 | commons-io 24 | 2.4 25 | 26 | ``` 27 | ```xml 28 | 2. servlet-context.xml 29 | 30 | 31 | 32 | ``` 33 | ```html 34 | 3. FileUpload.jsp 35 | 36 | File Upload Example: 37 | 38 |
39 | File to upload: 40 |

41 | Press here to upload the file! 42 |
43 | 44 |

45 | 46 | ``` 47 | ```java 48 | 4. In Controller: 49 | @Controller 50 | @RequestMapping("/upload") 51 | public class FileUploadController { 52 | 53 | @RequestMapping(method = RequestMethod.GET) 54 | public String index() { 55 | return "fileUpload"; 56 | } 57 | 58 | @RequestMapping(method = RequestMethod.POST) 59 | public String upload(@RequestParam("file") MultipartFile file, Model model) throws IOException { 60 | byte[] bytes; 61 | 62 | if (!file.isEmpty()) { 63 | bytes = file.getBytes(); 64 | 65 | //Write in file. 66 | FileOutputStream out = new FileOutputStream( "D:\\temp\\"+ file.getOriginalFilename() ); 67 | out.write(bytes); 68 | out.close(); 69 | } 70 | 71 | System.out.println( "Received File:" + file.getOriginalFilename() ); 72 | 73 | model.addAttribute("successMsg", "File upload Success: "+ file.getOriginalFilename()); 74 | return "fileUpload"; 75 | } 76 | } 77 | ``` 78 | 79 | ===============Spring Rest API Call=============== 80 | ```xml 81 | 1. POM.xml : Need this for json to/from object: For SPRING REST Call 82 | 83 | com.fasterxml.jackson.core 84 | jackson-core 85 | 2.5.4 86 | 87 | 88 | com.fasterxml.jackson.core 89 | jackson-databind 90 | 2.5.4 91 | 92 | ``` 93 | ```java 94 | 2. Controller: @RestController 95 | @RestController 96 | @RequestMapping("api/rest") 97 | public class StudentRestController { 98 | 99 | @Autowired 100 | private StudentDao studentDao; 101 | 102 | @RequestMapping(method = RequestMethod.GET) 103 | public ResponseEntity> index() { 104 | ResponseEntity> studList = new ResponseEntity>( studentDao.getAll(), HttpStatus.OK); 105 | return studList; 106 | } 107 | } 108 | ``` 109 | ``` 110 | 3. You need to have Jquery to send ajax rest call to server: 111 | 112 | ``` 113 | ```java 114 | 4. Create /rest to go to rest testing jsp file: 115 | 116 | @RequestMapping(value = "/rest", method = RequestMethod.GET) 117 | public String restCall() { 118 | return "rest"; 119 | } 120 | 121 | ``` 122 | 5. create rest.jsp file like this: 123 | ```html 124 | <%@ page language="java" contentType="text/html; charset=ISO-8859-1" 125 | pageEncoding="ISO-8859-1"%> 126 | 127 | 128 | 129 | 130 | Insert title here 131 | 132 | 135 | 136 | 137 | 138 |

Rest Call Example:

139 | Go To Student

140 | 141 |
142 |

143 | 144 | 145 | 157 | 158 | 159 | 160 | ``` 161 | ``` 162 | Where $.ajax is jquery Ajax server call method. 163 | content type: application/json is to modify header information from text/html to json. 164 | JSON.stringify is to convert JSON data to String. 165 | $.ajax({ 166 | type : "GET", 167 | contentType : "application/json", 168 | url : "api/rest", 169 | }).then(function(data) { 170 | $('#displayJSON').html(JSON.stringify(data)); 171 | }); 172 | 173 | It will care server api/rest url(that is rest usrl it only accept/resturn json data. 174 | ``` 175 | 176 |







177 | ======================LOG4J=====================
178 | log4j is a reliable, fast and flexible logging framework (APIs) written in Java.
179 | log4j has three main components:
180 | ``` 181 | loggers: Responsible for capturing logging information. 182 | appenders: Responsible for publishing logging information to various preferred destinations. 183 | layouts: Responsible for formatting logging information in different styles. 184 | It uses multiple levels, namely ALL, TRACE, DEBUG, INFO, WARN, ERROR and FATAL 185 | ``` 186 | **************** 187 | Log4j configuration in XML file format. (Create log4j.xml file in src/main/resources) 188 | **************** 189 | ``` 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | ``` 244 | 245 | OR> Log4j configuration in properties file format. (you can create log4j.properties file as well): 246 | 247 | ``` 248 | # Root logger option 249 | log4j.rootLogger=DEBUG, stdout, file 250 | 251 | # Redirect log messages to console 252 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender 253 | log4j.appender.stdout.Target=System.out 254 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 255 | log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 256 | 257 | # Redirect log messages to a log file, support file rolling. 258 | log4j.appender.file=org.apache.log4j.RollingFileAppender 259 | log4j.appender.file.File=C:\\log4j-application.log 260 | log4j.appender.file.MaxFileSize=5MB 261 | log4j.appender.file.MaxBackupIndex=10 262 | log4j.appender.file.layout=org.apache.log4j.PatternLayout 263 | log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 264 | ``` 265 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | com.javastud 6 | springmvcweb 7 | JavaStudSpringMVCWeb 8 | war 9 | 1.0.0-BUILD-SNAPSHOT 10 | 11 | 1.8 12 | UTF-8 13 | UTF-8 14 | 4.3.5.RELEASE 15 | 1.7.4 16 | 1.7.5 17 | 4.2.2.RELEASE 18 | 19 | 20 | 21 | 22 | 23 | org.springframework 24 | spring-context 25 | ${org.springframework-version} 26 | 27 | 28 | 29 | commons-logging 30 | commons-logging 31 | 32 | 33 | 34 | 35 | org.springframework 36 | spring-webmvc 37 | ${org.springframework-version} 38 | 39 | 40 | 41 | 42 | 43 | org.springframework.security 44 | spring-security-web 45 | ${springsecurity.version} 46 | 47 | 48 | org.springframework.security 49 | spring-security-config 50 | ${springsecurity.version} 51 | 52 | 53 | 54 | org.aspectj 55 | aspectjweaver 56 | 1.8.10 57 | 58 | 59 | 60 | org.springframework 61 | spring-tx 62 | ${org.springframework-version} 63 | 64 | 65 | 66 | org.springframework 67 | spring-orm 68 | ${org.springframework-version} 69 | 70 | 71 | 72 | 73 | com.fasterxml.jackson.core 74 | jackson-core 75 | 2.5.4 76 | 77 | 78 | com.fasterxml.jackson.core 79 | jackson-databind 80 | 2.5.4 81 | 82 | 83 | 84 | 85 | 86 | commons-dbcp 87 | commons-dbcp 88 | 1.4 89 | 90 | 91 | 92 | 93 | commons-fileupload 94 | commons-fileupload 95 | 1.2.2 96 | compile 97 | 98 | 99 | commons-io 100 | commons-io 101 | 2.4 102 | 103 | 104 | 105 | 106 | 107 | org.hibernate 108 | hibernate-core 109 | 4.0.0.Final 110 | 111 | 112 | org.hibernate 113 | hibernate-entitymanager 114 | 4.0.0.Final 115 | 116 | 117 | 118 | 119 | mysql 120 | mysql-connector-java 121 | 5.1.10 122 | 123 | 124 | 125 | 126 | org.projectlombok 127 | lombok 128 | 1.16.14 129 | provided 130 | 131 | 132 | 133 | 134 | 135 | 136 | org.aspectj 137 | aspectjrt 138 | ${org.aspectj-version} 139 | 140 | 141 | 142 | 143 | org.slf4j 144 | slf4j-api 145 | ${org.slf4j-version} 146 | 147 | 148 | org.slf4j 149 | jcl-over-slf4j 150 | ${org.slf4j-version} 151 | runtime 152 | 153 | 154 | org.slf4j 155 | slf4j-log4j12 156 | ${org.slf4j-version} 157 | runtime 158 | 159 | 160 | log4j 161 | log4j 162 | 1.2.15 163 | 164 | 165 | javax.mail 166 | mail 167 | 168 | 169 | javax.jms 170 | jms 171 | 172 | 173 | com.sun.jdmk 174 | jmxtools 175 | 176 | 177 | com.sun.jmx 178 | jmxri 179 | 180 | 181 | runtime 182 | 183 | 184 | 185 | 186 | javax.inject 187 | javax.inject 188 | 1 189 | 190 | 191 | 192 | 193 | javax.servlet 194 | servlet-api 195 | 2.5 196 | provided 197 | 198 | 199 | javax.servlet.jsp 200 | jsp-api 201 | 2.1 202 | provided 203 | 204 | 205 | javax.servlet 206 | jstl 207 | 1.2 208 | 209 | 210 | 211 | 212 | junit 213 | junit 214 | 4.12 215 | test 216 | 217 | 218 | org.hamcrest 219 | hamcrest-core 220 | 1.3 221 | 222 | 223 | 224 | 225 | 226 | 227 | maven-eclipse-plugin 228 | 2.9 229 | 230 | 231 | org.springframework.ide.eclipse.core.springnature 232 | 233 | 234 | org.springframework.ide.eclipse.core.springbuilder 235 | 236 | true 237 | true 238 | 239 | 240 | 241 | org.apache.maven.plugins 242 | maven-compiler-plugin 243 | 2.5.1 244 | 245 | ${java-version} 246 | ${java-version} 247 | -Xlint:all 248 | true 249 | true 250 | 251 | 252 | 253 | org.codehaus.mojo 254 | exec-maven-plugin 255 | 1.2.1 256 | 257 | org.test.int1.Main 258 | 259 | 260 | 261 | org.apache.tomcat.maven 262 | tomcat7-maven-plugin 263 | 2.2 264 | 265 | localhost 266 | /springmvcweb 267 | 268 | Etc/UTC 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/HomeController.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb; 2 | 3 | import java.util.Locale; 4 | 5 | import javax.servlet.http.HttpServletRequest; 6 | import javax.servlet.http.HttpSession; 7 | 8 | import org.slf4j.Logger; 9 | import org.slf4j.LoggerFactory; 10 | import org.springframework.beans.factory.annotation.Autowired; 11 | import org.springframework.stereotype.Controller; 12 | import org.springframework.ui.Model; 13 | import org.springframework.web.bind.annotation.ModelAttribute; 14 | import org.springframework.web.bind.annotation.RequestMapping; 15 | import org.springframework.web.bind.annotation.RequestMethod; 16 | 17 | import com.javastud.springmvcweb.dao.UserDao; 18 | import com.javastud.springmvcweb.model.User; 19 | 20 | /** 21 | * Handles requests for the application home page. 22 | */ 23 | @Controller 24 | public class HomeController { 25 | 26 | private static final Logger logger = LoggerFactory.getLogger(HomeController.class); 27 | 28 | @Autowired 29 | private UserDao userDao; 30 | 31 | /** 32 | * Simply selects the home view to render by returning its name. 33 | */ 34 | @RequestMapping(value = "/", method = RequestMethod.GET) 35 | public String home(Locale locale, HttpServletRequest request, Model model ) { 36 | logger.info("Welcome home! The client locale is {}.", locale); 37 | return "login"; 38 | } 39 | 40 | @RequestMapping(value="/profile", method = RequestMethod.GET) 41 | public String profile(HttpSession session){ 42 | String activeUser = (String)session.getAttribute("activeUser"); 43 | if(null == activeUser){ 44 | return "login"; 45 | } 46 | return "profile"; 47 | } 48 | 49 | @RequestMapping(value="/profile", method = RequestMethod.POST) 50 | public String profilePOST( @ModelAttribute User user, Model model, HttpSession session){ 51 | if(userDao.validateUser(user)){ 52 | //Success: Display Profile 53 | session.setAttribute("activeUser", user.getUsername()); 54 | session.setMaxInactiveInterval(3 * 60); //3 minute 55 | return "profile"; 56 | 57 | }else { 58 | //Show error msg in login screen. 59 | model.addAttribute("loginError", "Sorry User/Password invalid! Please re-login."); 60 | logger.error("Sorry User/Password invalid! Please re-login."); 61 | return "login"; 62 | } 63 | } 64 | 65 | @RequestMapping(value="/logout" , method = RequestMethod.GET) 66 | public String logout(HttpSession session){ 67 | session.invalidate(); 68 | return "login"; 69 | } 70 | 71 | @RequestMapping(value="/rest", method = RequestMethod.GET) 72 | public String rest(){ 73 | return "rest"; 74 | } 75 | 76 | @RequestMapping(value="/angular", method = RequestMethod.GET) 77 | public String angular(){ 78 | return "currency"; 79 | } 80 | 81 | @RequestMapping(value="/about", method = RequestMethod.GET) 82 | public String about(){ 83 | return "about"; 84 | } 85 | 86 | @RequestMapping(value="/index", method = RequestMethod.GET) 87 | public String index(){ 88 | return "index"; 89 | } 90 | 91 | } 92 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/controller/FileUploadDownloadController.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.controller; 2 | 3 | import java.io.File; 4 | import java.io.FileInputStream; 5 | import java.io.IOException; 6 | import java.io.UnsupportedEncodingException; 7 | import java.net.URLDecoder; 8 | import java.net.URLEncoder; 9 | import java.util.ArrayList; 10 | import java.util.List; 11 | 12 | import javax.servlet.http.HttpServletResponse; 13 | 14 | import org.apache.commons.io.FilenameUtils; 15 | import org.springframework.beans.factory.annotation.Autowired; 16 | import org.springframework.stereotype.Controller; 17 | import org.springframework.ui.Model; 18 | import org.springframework.util.FileCopyUtils; 19 | import org.springframework.util.StringUtils; 20 | import org.springframework.web.bind.annotation.GetMapping; 21 | import org.springframework.web.bind.annotation.RequestMapping; 22 | import org.springframework.web.bind.annotation.RequestMethod; 23 | import org.springframework.web.bind.annotation.RequestParam; 24 | import org.springframework.web.multipart.MultipartFile; 25 | import org.springframework.web.servlet.ModelAndView; 26 | 27 | import com.javastud.springmvcweb.service.FileStorageService; 28 | 29 | @Controller 30 | public class FileUploadDownloadController { 31 | 32 | @Autowired 33 | private FileStorageService fileStorageService; 34 | 35 | @GetMapping("/upload") 36 | public ModelAndView uploadGET(){ 37 | ModelAndView mv = new ModelAndView("fileUpload"); 38 | return mv; 39 | } 40 | 41 | @RequestMapping(value = "/upload", method = RequestMethod.POST) 42 | public String uploadPOST(@RequestParam("file") MultipartFile files[], Model model) 43 | throws UnsupportedEncodingException { 44 | 45 | List fileNames = new ArrayList<>(); 46 | 47 | for (MultipartFile file : files) { 48 | if (!file.isEmpty()) { 49 | 50 | // Save file in drive 51 | fileStorageService.saveFile(file); 52 | 53 | fileNames.add(URLEncoder.encode(file.getOriginalFilename(), "UTF-8")); 54 | } 55 | } 56 | model.addAttribute("successMsg", "File Upload success, No of files: " + fileNames.size()); 57 | model.addAttribute("fileNames", fileNames); 58 | 59 | return "fileUpload"; 60 | } 61 | 62 | @RequestMapping(value = "/download", method = RequestMethod.GET) 63 | public void download(@RequestParam("file") String fileName, HttpServletResponse response) throws IOException { 64 | 65 | if (!StringUtils.isEmpty(fileName)) { 66 | 67 | fileName = URLDecoder.decode(fileName, "UTF-8"); 68 | 69 | File imagePath = new File(FileStorageService.FILE_PATH + fileName); 70 | if (imagePath.exists()) { 71 | 72 | String ext = FilenameUtils.getExtension(fileName); 73 | 74 | // Set Header 75 | if (ext.equals("png") || ext.equals("jpg") || ext.equals("jpeg")) { 76 | response.setContentType("image/" + ext); 77 | } else if (ext.equals("pdf")) { 78 | response.setContentType("application/" + ext); 79 | } 80 | response.setHeader("Content-Disposition", "attachment;filename=" + fileName); 81 | 82 | // Copy file stream and write in response writer or outputstream 83 | FileCopyUtils.copy(new FileInputStream(imagePath), response.getOutputStream()); 84 | 85 | //OR 86 | /* 87 | PrintWriter out = response.getWriter(); 88 | FileInputStream fin = new FileInputStream(imagePath); 89 | 90 | int i = 0; 91 | while ((i = fin.read()) != -1) { 92 | out.write(i); 93 | } 94 | fin.close(); 95 | out.close(); 96 | */ 97 | 98 | } 99 | 100 | } 101 | 102 | } 103 | 104 | } 105 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/controller/StudentController.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.controller; 2 | 3 | import java.io.UnsupportedEncodingException; 4 | import java.net.URLEncoder; 5 | import java.text.SimpleDateFormat; 6 | import java.util.Date; 7 | 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.beans.propertyeditors.CustomDateEditor; 10 | import org.springframework.stereotype.Controller; 11 | import org.springframework.ui.Model; 12 | import org.springframework.web.bind.WebDataBinder; 13 | import org.springframework.web.bind.annotation.InitBinder; 14 | import org.springframework.web.bind.annotation.ModelAttribute; 15 | import org.springframework.web.bind.annotation.PathVariable; 16 | import org.springframework.web.bind.annotation.RequestMapping; 17 | import org.springframework.web.bind.annotation.RequestMethod; 18 | import org.springframework.web.servlet.ModelAndView; 19 | 20 | import com.javastud.springmvcweb.dao.StudentDao; 21 | import com.javastud.springmvcweb.model.Student; 22 | import com.javastud.springmvcweb.service.FileStorageService; 23 | 24 | @Controller 25 | @RequestMapping(value = "/stud") 26 | public class StudentController { 27 | 28 | @Autowired 29 | private StudentDao studentDao; 30 | 31 | @Autowired 32 | private FileStorageService fileStorageService; 33 | 34 | @InitBinder 35 | public void initBinder(WebDataBinder binder) { 36 | SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 37 | formatter.setLenient(true); 38 | binder.registerCustomEditor(Date.class, new CustomDateEditor(formatter, true)); 39 | } 40 | 41 | @RequestMapping(method = RequestMethod.GET) 42 | public ModelAndView studGET(Model model) { 43 | 44 | ModelAndView mv = new ModelAndView("studentForm"); 45 | mv.addObject("student", new Student()); 46 | mv.addObject("studentList", studentDao.getAll()); 47 | 48 | return mv; 49 | } 50 | 51 | @RequestMapping(method = RequestMethod.POST) 52 | public String studPOST(@ModelAttribute Student student) { 53 | saveStudent(student); 54 | return "redirect:/stud"; 55 | } 56 | 57 | @RequestMapping(value = "/add", method = RequestMethod.GET) 58 | public String addStud(Model model) { 59 | model.addAttribute("student", new Student()); 60 | return "studentFormDialog"; 61 | } 62 | 63 | @RequestMapping(value = "{id}/edit", method = RequestMethod.GET) 64 | public String editStud(@PathVariable("id") Long id, Model model) { 65 | Student stud = studentDao.get(id); 66 | model.addAttribute("student", stud); 67 | return "studentFormDialog"; 68 | } 69 | 70 | @RequestMapping(value = "{id}/delete", method = RequestMethod.GET) 71 | public String deleteStud(@PathVariable("id") Long id) { 72 | studentDao.delete(id); 73 | return "redirect:/stud"; 74 | } 75 | 76 | private void saveStudent(Student student) { 77 | try { 78 | if (!student.getFile().isEmpty()) { 79 | student.setImageName(URLEncoder.encode(student.getFile().getOriginalFilename(), "UTF-8")); 80 | // Save file in drive 81 | fileStorageService.saveFile(student.getFile()); 82 | } 83 | 84 | // Save data in db. 85 | studentDao.insertUpdate(student); 86 | 87 | } catch (UnsupportedEncodingException e) { 88 | e.printStackTrace(); 89 | } 90 | } 91 | 92 | } 93 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/controller/StudentRestController.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.controller; 2 | 3 | import java.util.Collections; 4 | import java.util.Comparator; 5 | import java.util.List; 6 | 7 | import org.slf4j.Logger; 8 | import org.slf4j.LoggerFactory; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.http.HttpStatus; 11 | import org.springframework.http.ResponseEntity; 12 | import org.springframework.web.bind.annotation.RequestMapping; 13 | import org.springframework.web.bind.annotation.RequestMethod; 14 | import org.springframework.web.bind.annotation.RestController; 15 | import org.springframework.web.client.RestTemplate; 16 | 17 | import com.javastud.springmvcweb.dao.StudentDao; 18 | import com.javastud.springmvcweb.model.Student; 19 | 20 | @RestController 21 | @RequestMapping("api/rest") 22 | public class StudentRestController { 23 | 24 | private static final Logger logger = LoggerFactory.getLogger(StudentRestController.class); 25 | 26 | @Autowired 27 | private StudentDao studentDao; 28 | 29 | @RequestMapping(value = "/students", method = RequestMethod.GET) 30 | public ResponseEntity> studGetALL() { 31 | logger.info("Fetching data from db.."); 32 | List studList = studentDao.getAll(); 33 | 34 | // Sort it: TODO: sort students by Name: Normal way 35 | /*Collections.sort(studList, new Comparator() { 36 | @Override 37 | public int compare(Student o1, Student o2) { 38 | return o1.getFirstName().compareTo(o2.getFirstName()); 39 | } 40 | });*/ 41 | 42 | Collections.sort(studList, (Student o1, Student o2) -> o1.getFirstName().compareTo(o2.getFirstName())); 43 | 44 | ResponseEntity> resp = new ResponseEntity<>(studList, HttpStatus.OK); 45 | return resp; 46 | } 47 | 48 | @RequestMapping(value = "/currency", method = RequestMethod.GET) 49 | public ResponseEntity getTodayRate() { 50 | RestTemplate restTemplate = new RestTemplate(); 51 | ResponseEntity resp = restTemplate.getForEntity("http://api.fixer.io/latest?base=USD", String.class); 52 | return resp; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/dao/StudentDao.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.dao; 2 | 3 | import java.util.List; 4 | 5 | import com.javastud.springmvcweb.model.Student; 6 | 7 | public interface StudentDao { 8 | void insertUpdate(Student student); 9 | List getAll(); 10 | Student get(Long id); 11 | void delete(Long id); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/dao/StudentDaoImpl.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.dao; 2 | 3 | import java.util.List; 4 | 5 | import javax.annotation.Resource; 6 | 7 | import org.hibernate.Criteria; 8 | import org.hibernate.Session; 9 | import org.hibernate.SessionFactory; 10 | import org.springframework.stereotype.Repository; 11 | import org.springframework.transaction.annotation.Transactional; 12 | 13 | import com.javastud.springmvcweb.model.Student; 14 | 15 | @Repository 16 | public class StudentDaoImpl implements StudentDao { 17 | 18 | @Resource 19 | private SessionFactory sessionFactory; 20 | 21 | @Override 22 | @Transactional 23 | public void insertUpdate(Student student) { 24 | Session session = sessionFactory.getCurrentSession(); 25 | session.saveOrUpdate(student); 26 | } 27 | 28 | @Override 29 | @Transactional 30 | public List getAll() { 31 | Session session = sessionFactory.getCurrentSession(); 32 | //criteria = where, condition = Restrictions 33 | Criteria criteria = session.createCriteria(Student.class); 34 | 35 | /*criteria.add(Restrictions.eq("lastName", "SHRESTHA")); 36 | criteria.add(Restrictions.isNotEmpty("collegeName"));*/ 37 | 38 | List studList = (List) criteria.list(); 39 | 40 | return studList; 41 | } 42 | 43 | @Override 44 | @Transactional 45 | public Student get(Long id) { 46 | Session session = sessionFactory.getCurrentSession(); 47 | Student student = (Student) session.get(Student.class, id); 48 | return student; 49 | } 50 | 51 | @Override 52 | @Transactional 53 | public void delete(Long id) { 54 | Session session = sessionFactory.getCurrentSession(); 55 | Student student = (Student) session.get(Student.class, id); 56 | session.delete(student); 57 | } 58 | 59 | } 60 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/dao/UserDao.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.dao; 2 | 3 | import com.javastud.springmvcweb.model.User; 4 | 5 | public interface UserDao { 6 | boolean validateUser(User user); 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/dao/UserDaoImpl.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.dao; 2 | 3 | import javax.sql.DataSource; 4 | 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.jdbc.core.JdbcTemplate; 7 | import org.springframework.stereotype.Repository; 8 | 9 | import com.javastud.springmvcweb.model.User; 10 | 11 | @Repository 12 | public class UserDaoImpl implements UserDao { 13 | 14 | @Autowired 15 | private DataSource dataSource; 16 | 17 | @Override 18 | public boolean validateUser(User user) { 19 | try { 20 | JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); 21 | 22 | String query = "SELECT username FROM USER WHERE username = '" + user.getUsername() + "' AND PASSWORD = '" + user.getPassword() + "'"; 23 | System.out.println(query); 24 | 25 | String dbUsername = jdbcTemplate.queryForObject(query, String.class); 26 | if (dbUsername != null) { 27 | return true; 28 | } 29 | } catch (Exception e) { 30 | e.printStackTrace(); 31 | } 32 | 33 | return false; 34 | 35 | } 36 | 37 | 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/designpatterns/builder/BuilderPatternExample.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.designpatterns.builder; 2 | 3 | import java.time.LocalDate; 4 | 5 | public class BuilderPatternExample { 6 | public static void main(String[] args) { 7 | User user = User.builder() 8 | .name("RAM") 9 | .age(20) 10 | .email("ram@gmail.com") 11 | .build(); 12 | System.out.println(user); 13 | 14 | 15 | Employee emp = Employee.builder().id(5).name("Ram").address("KTM").birthDate(LocalDate.of(1990, 11, 17)).build(); 16 | System.out.println(emp); 17 | 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/designpatterns/builder/Employee.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.designpatterns.builder; 2 | 3 | import java.time.LocalDate; 4 | 5 | import lombok.Builder; 6 | import lombok.Data; 7 | 8 | @Builder 9 | @Data 10 | public class Employee { 11 | private int id; 12 | private String name; 13 | private String address; 14 | private LocalDate birthDate; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/designpatterns/builder/User.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.designpatterns.builder; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | @Data 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | public class User { 11 | 12 | private String name; 13 | private int age; 14 | private String email; 15 | 16 | public static UserBuilder builder() { 17 | return new UserBuilder(); 18 | } 19 | 20 | public static class UserBuilder { 21 | private String name; 22 | private int age; 23 | private String email; 24 | 25 | public UserBuilder() { 26 | } 27 | 28 | public UserBuilder name(String name) { 29 | this.name = name; 30 | return this; 31 | } 32 | 33 | public UserBuilder age(int age) { 34 | this.age = age; 35 | return this; 36 | } 37 | 38 | public UserBuilder email(String email) { 39 | this.email = email; 40 | return this; 41 | } 42 | 43 | public User build() { 44 | return new User(this.name, this.age, this.email); 45 | } 46 | 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/designpatterns/decorator/DecoratorPatterenTest.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.designpatterns.decorator; 2 | 3 | //https://dzone.com/articles/design-patterns-decorator 4 | public class DecoratorPatterenTest { 5 | public static void main(String[] args) { 6 | 7 | String content = "HI, This is John form Nepal , \n learning Decorator pattern."; 8 | 9 | IEmail email = new Email(content); 10 | 11 | EmailSender sender = new EmailSender(); 12 | sender.sendEmail(email); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/designpatterns/decorator/Email.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.designpatterns.decorator; 2 | 3 | public class Email implements IEmail { 4 | private String content; 5 | 6 | public Email(String content) { 7 | this.content = content; 8 | } 9 | 10 | @Override 11 | public String getContents() { 12 | // general email stuff 13 | return content; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/designpatterns/decorator/EmailDecorator.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.designpatterns.decorator; 2 | 3 | public abstract class EmailDecorator implements IEmail { 4 | // wrapped component 5 | IEmail originalEmail; 6 | 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/designpatterns/decorator/EmailSender.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.designpatterns.decorator; 2 | 3 | public class EmailSender { 4 | public void sendEmail(IEmail email) { 5 | // read the email to-address, to see if it's going outside of the 6 | // company if so decorate it 7 | ExternalEmailDecorator external = new ExternalEmailDecorator(email); 8 | String contents = external.getContents(); // send 9 | System.out.println(contents); 10 | // Send email 11 | 12 | int i = 0; 13 | for (;;) { 14 | System.out.print("Sending Email.... "+ i + "% \r" ); 15 | try { 16 | Thread.sleep(500); 17 | } catch (InterruptedException e) { 18 | e.printStackTrace(); 19 | } 20 | if (i++ == 10) { 21 | break; 22 | } 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/designpatterns/decorator/ExternalEmailDecorator.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.designpatterns.decorator; 2 | 3 | public class ExternalEmailDecorator extends EmailDecorator { 4 | private String content; 5 | 6 | public ExternalEmailDecorator(IEmail basicEmail) { 7 | originalEmail = basicEmail; 8 | } 9 | 10 | @Override 11 | public String getContents() { 12 | // secure original 13 | content = addDisclaimer(originalEmail.getContents()); 14 | return content; 15 | } 16 | 17 | private String addDisclaimer(String message) { 18 | // append company disclaimer to message 19 | return message + "\n Company Disclaimer"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/designpatterns/decorator/IEmail.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.designpatterns.decorator; 2 | 3 | public interface IEmail { 4 | public String getContents(); 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/designpatterns/decorator/SecureEmailDecorator.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.designpatterns.decorator; 2 | 3 | public class SecureEmailDecorator extends EmailDecorator { 4 | private String content; 5 | 6 | public SecureEmailDecorator(IEmail basicEmail) { 7 | originalEmail = basicEmail; 8 | } 9 | 10 | @Override 11 | public String getContents() { 12 | // secure original 13 | content = encrypt(originalEmail.getContents()); 14 | return content; 15 | } 16 | 17 | private String encrypt(String message) { 18 | // encrypt the string 19 | return message + message.hashCode(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/designpatterns/factory/Bank.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.designpatterns.factory; 2 | 3 | public interface Bank { 4 | void info(); 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/designpatterns/factory/BankFactory.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.designpatterns.factory; 2 | 3 | public class BankFactory { 4 | public Bank getBank(BankType bankType) { 5 | 6 | if (bankType == null) { 7 | return null; 8 | } 9 | 10 | if (bankType == BankType.GLOBAL) { 11 | return new Global(); 12 | } else if (bankType == BankType.NABIL) { 13 | return new Nabil(); 14 | } 15 | 16 | return null; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/designpatterns/factory/BankType.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.designpatterns.factory; 2 | 3 | public enum BankType { 4 | GLOBAL, NABIL 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/designpatterns/factory/FactoryPatterenExample.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.designpatterns.factory; 2 | 3 | public class FactoryPatterenExample { 4 | public static void main(String[] args) { 5 | BankFactory bankFactory = new BankFactory(); 6 | 7 | Bank global = bankFactory.getBank(BankType.GLOBAL); 8 | global.info(); 9 | 10 | Bank nabil = bankFactory.getBank(BankType.NABIL); 11 | nabil.info(); 12 | 13 | //Best Example: Hibernate SessionFactory 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/designpatterns/factory/Global.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.designpatterns.factory; 2 | 3 | public class Global implements Bank { 4 | 5 | @Override 6 | public void info() { 7 | System.out.println("Global Bank is largest venture bank in Nepal since 2005."); 8 | } 9 | 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/designpatterns/factory/Nabil.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.designpatterns.factory; 2 | 3 | public class Nabil implements Bank { 4 | 5 | @Override 6 | public void info() { 7 | System.out.println("Nabil Bank is Pioneer bank in Nepal."); 8 | 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/designpatterns/singleton/Company.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.designpatterns.singleton; 2 | 3 | public class Company { 4 | 5 | private static Company instance = new Company(); 6 | 7 | private Company() { 8 | 9 | } 10 | 11 | public static Company getInstance() { 12 | return instance; 13 | } 14 | 15 | public String getName() { 16 | return "NGSOFT"; 17 | } 18 | 19 | @Override 20 | public String toString() { 21 | return "NGSOFT CORP."; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/designpatterns/singleton/SingletonPatternExample.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.designpatterns.singleton; 2 | 3 | import java.io.IOException; 4 | 5 | public class SingletonPatternExample { 6 | public static void main(String[] args) { 7 | Company comp1 = Company.getInstance(); 8 | System.out.println(comp1); 9 | 10 | Company comp2 = Company.getInstance(); 11 | System.out.println(comp2); 12 | 13 | System.out.println(comp1 == comp2); 14 | 15 | // best Example : open calc(Runtime) 16 | try { 17 | Runtime r = Runtime.getRuntime(); 18 | r.exec("calc"); 19 | } catch (IOException e) { 20 | e.printStackTrace(); 21 | } 22 | 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/java8/datatime/Java8DateTimeTest.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.java8.datatime; 2 | 3 | import java.time.Instant; 4 | import java.time.LocalDate; 5 | import java.time.LocalDateTime; 6 | import java.time.LocalTime; 7 | import java.time.Month; 8 | import java.time.ZoneId; 9 | import java.time.ZonedDateTime; 10 | import java.time.format.DateTimeFormatter; 11 | import java.util.Date; 12 | 13 | /** 14 | * java.time package Old date time: 15 | * 16 | * Not thread safe \n Poor design Difficult \n time zone handling 17 | * 18 | * @author ojhay 19 | * 20 | */ 21 | public class Java8DateTimeTest { 22 | public static void main(String[] args) { 23 | 24 | /** 25 | * LocalDate/LocalTime and LocalDateTime classes simplify the 26 | * development where timezones are not required. 27 | */ 28 | 29 | //OLD 30 | Date d = new Date(); 31 | System.out.println(d); 32 | 33 | // Get the current date and time 34 | // ERROR: LocalDateTime currentTime = new LocalDateTime(); 35 | LocalDateTime currentDTime = LocalDateTime.now(); 36 | System.out.println("Current Date Time: " + currentDTime); 37 | System.out.println(currentDTime.getDayOfWeek()); 38 | 39 | LocalDate date1 = currentDTime.toLocalDate(); 40 | System.out.println("Date1: " + date1); 41 | 42 | LocalTime time1 = currentDTime.toLocalTime(); 43 | System.out.println("Time1: " + time1); 44 | 45 | // 12 December 2014 46 | LocalDate date2 = LocalDate.of(2014, Month.DECEMBER, 12); 47 | System.out.println("Date of: " + date2); 48 | 49 | // 22 hour 15 minutes 50 | LocalTime time2 = LocalTime.of(22, 15); 51 | System.out.println("Time 2: " + time2); 52 | 53 | String timeStr = "20:15:30"; //"HH:mm:ss MM/dd/uuuu"; 54 | LocalTime time3 = LocalTime.parse(timeStr, DateTimeFormatter.ofPattern("HH:mm:ss")); 55 | System.out.println("Formatted Time: " + time3); 56 | 57 | System.out.println("-----------Zoned Date-Time API------------"); 58 | System.out.println(ZonedDateTime.now()); //Etc/UTC 59 | 60 | ZoneId currentZone = ZoneId.of("Asia/Kathmandu"); 61 | System.out.println(ZonedDateTime.now(currentZone)); 62 | 63 | /** 64 | * Backward Compatibility A toInstant() method is added to the original 65 | * Date and Calendar objects, which can be used to convert them to the 66 | * new Date-Time API. Use an ofInstant(Insant,ZoneId) method to get a 67 | * LocalDateTime or ZonedDateTime object. 68 | */ 69 | // Get the current date 70 | Date currentDate = new Date(); 71 | System.out.println("Current date (old) :" + currentDate); 72 | 73 | // Get the instant of current date in terms of milliseconds 74 | Instant instant = currentDate.toInstant(); 75 | ZoneId zone = ZoneId.systemDefault(); 76 | 77 | LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone); 78 | System.out.println("Local Date Time : " + localDateTime); 79 | 80 | ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(instant, zone); 81 | System.out.println("Zoned Date Time: " + zonedDateTime); 82 | 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/java8/funcinterface/Bank.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.java8.funcinterface; 2 | 3 | /** 4 | * A new annotation, @FunctionalInterface, has been introduced. It 5 | * can be placed on an interface to declare the intention of it being a 6 | * functional interface. It will cause the interface to refuse to compile unless 7 | * you've managed to make it a functional interface. It's sort of like 8 | * @Override in this way; it declares intention and doesn't allow 9 | * you to use it incorrectly. 10 | * 11 | * An extremely valuable property of functional interfaces is that they can be 12 | * instantiated using lambdas. Here are a few examples of lambdas: 13 | * 14 | * @author ojhay 15 | * 16 | */ 17 | @FunctionalInterface 18 | public interface Bank { 19 | 20 | /** 21 | * Java 8 is that of a "functional interface". An interface is a functional 22 | * interface if it defines exactly one abstract method. Ex: Runnable, Bank 23 | */ 24 | public abstract String getName(); // "abstract" modifier not necessary 25 | 26 | /** 27 | * Default methods are not abstract, so a functional interface can define as 28 | * many default methods as it likes. 29 | */ 30 | default double getRate() { 31 | return 1.0; 32 | } 33 | 34 | default double getMaxTransAmout(){ 35 | return 1_00_000.0; 36 | } 37 | 38 | public static double getDollarExchangeRate() { 39 | return 105.5; 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/java8/funcinterface/FunctionalInterfaceTest.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.java8.funcinterface; 2 | 3 | //https://www.techempower.com/blog/2013/03/26/everything-about-java-8/ 4 | public class FunctionalInterfaceTest { 5 | public static void main(String[] args) { 6 | 7 | // 1. Lambda: Runnable example 8 | Runnable normalR = new Runnable() { 9 | @Override 10 | public void run() { 11 | System.out.println("I am Normal Old Runnable."); 12 | } 13 | }; 14 | 15 | Runnable lambdaR = () -> { 16 | System.out.println("I am New Lambda Runnable."); 17 | }; 18 | 19 | // ========================== 20 | 21 | Bank normalGlobal = new Global(); 22 | System.out.println(normalGlobal); 23 | System.out.println(normalGlobal.getName() + "\n-----------------"); 24 | 25 | Bank annonymousGlobal = new Bank() { 26 | @Override 27 | public String getName() { 28 | return "Name: Annonymous Global Bank."; 29 | } 30 | }; 31 | System.out.println(annonymousGlobal); 32 | System.out.println(annonymousGlobal.getName() + "\n-----------------"); 33 | 34 | Bank lambdaGlobal = () -> "Name: Lambda Global Bank. /人 ◕ ‿‿ ◕ 人\"; 35 | System.out.println(lambdaGlobal); 36 | System.out.println(lambdaGlobal.getName() + "\n-----------------"); 37 | 38 | // OR for multiline code inside method. 39 | Bank lambdaGl = () -> { 40 | return "Name: Lambda Global Bank. /人 ◕ ‿‿ ◕ 人\"; 41 | }; 42 | 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/java8/funcinterface/Global.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.java8.funcinterface; 2 | 3 | public class Global implements Bank { 4 | 5 | @Override 6 | public String getName() { 7 | return "Global Bank"; 8 | } 9 | 10 | @Override 11 | public double getRate() { 12 | return 6.5; // Bank.super.getRate(); 13 | } 14 | 15 | @Override 16 | public String toString() { 17 | return "This is global bank child of Functional interface. Rate: " + getRate(); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/java8/stream/LambdaStreamCollectorExample.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.java8.stream; 2 | 3 | import java.util.Arrays; 4 | import java.util.Collections; 5 | import java.util.Comparator; 6 | import java.util.List; 7 | import java.util.stream.Collectors; 8 | 9 | public class LambdaStreamCollectorExample { 10 | public static void main(String[] args) { 11 | 12 | List persons = Arrays.asList(new Person("Max", 18), new Person("Peter", 23), new Person("Mark", 33), 13 | new Person("David", 12)); 14 | 15 | System.out.println(persons); 16 | 17 | // Sort no 1 way: 18 | // EEROR Collections.sort(persons); , because Person have no comparable 19 | // interface implemented, not good idea if you want to sort diff list in 20 | // diff way, alternate way? Annonymous class. 21 | 22 | Collections.sort(persons, new Comparator() { 23 | @Override 24 | public int compare(Person o1, Person o2) { 25 | return o1.name.compareTo(o2.name); 26 | } 27 | }); 28 | System.out.println(persons); 29 | 30 | // Sort no 2 way: Lambda Expression. 31 | Collections.sort(persons, (Person a, Person b) -> a.name.compareTo(b.name)); 32 | System.out.println(persons); 33 | 34 | //=======filter all the person with Name M======================= 35 | List filtered = persons 36 | .stream() 37 | .filter(p -> p.name.startsWith("M")) 38 | .collect(Collectors.toList()); 39 | System.out.println(filtered); 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/java8/stream/Person.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.java8.stream; 2 | 3 | public class Person { 4 | String name; 5 | int age; 6 | 7 | Person(String name, int age) { 8 | this.name = name; 9 | this.age = age; 10 | } 11 | 12 | @Override 13 | public String toString() { 14 | return name; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/java8/stream/StreamTest.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.java8.stream; 2 | 3 | import java.util.Arrays; 4 | import java.util.List; 5 | import java.util.stream.Collectors; 6 | import java.util.stream.IntStream; 7 | import java.util.stream.Stream; 8 | 9 | /** 10 | * STREAM: A stream is something like an iterator. The values "flow past" 11 | * (analogy to a stream of water) and then they're gone. A stream can only be 12 | * traversed once, then it's used up. Streams may also be infinite. 13 | * 14 | * FILTER:stateless predicate to apply to each element to determine if it should 15 | * be included. 16 | * 17 | * Streams can be sequential or parallel. They start off as one and may be 18 | * switched to the other using stream.sequential() or stream.parallel(). The 19 | * actions of a sequential stream occur in serial fashion on one thread. The 20 | * actions of a parallel stream may be happening all at once on multiple 21 | * threads. 22 | * 23 | * Stream operations are either intermediate or terminal. Intermediate 24 | * operations return a stream so we can chain multiple intermediate operations 25 | * without using semicolons. Terminal operations are either void or return a 26 | * non-stream result. Filter, map and sorted are intermediate operations whereas 27 | * forEach is a terminal operation. 28 | * 29 | * Method reference: Shortcut way to write lambda. When lambda expression invokes 30 | * an existing method, you can use a method reference instead of a lambda expression. 31 | * Method reference Equivalent lambda expression 32 | * ---------------- --------------------------- 33 | * String::valueOf x -> String.valueOf(x) 34 | * Object::toString x -> x.toString() 35 | * x::toString () -> x.toString() 36 | * ArrayList::new () -> new ArrayList<>() 37 | * System.out::println x -> System.out.println(x) 38 | * @author ojhay 39 | * http://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/ 40 | */ 41 | public class StreamTest { 42 | public static void main(String[] args) { 43 | 44 | // Example 1: 45 | List myList = Arrays.asList("a1", "a2", "b1", "c2", "c1"); 46 | 47 | // FILTER:stateless predicate to apply to each element to determine if 48 | // it should be included 49 | 50 | //Task: filter: start with c, upper case, sorted, print 51 | myList 52 | .stream() 53 | .filter(s -> s.startsWith("c")) 54 | .map(String::toUpperCase) /*.map(s -> s.toUpperCase())*/ 55 | .sorted() 56 | .forEach(System.out::println); /*x -> System.out.println(x)*/ 57 | 58 | // C1 59 | // C2 60 | 61 | System.out.println("Example 2:=================="); 62 | 63 | // Just use Stream.of() to create a stream from a bunch of object 64 | // references. 65 | Stream.of("a1", "a2", "a3", "a1") 66 | .distinct() 67 | .forEach(System.out::println); 68 | 69 | // a1 70 | // a2 71 | // a3 72 | 73 | System.out.println("Example 3:=================="); 74 | /** 75 | * Besides regular object streams Java 8 ships with special kinds of 76 | * streams for working with the primitive data types int, long and 77 | * double. As you might have guessed it's IntStream, LongStream and 78 | * DoubleStream. 79 | * 80 | * IMP: primitive streams support the additional terminal aggregate 81 | * operations sum() and average() 82 | * 83 | * Map: return IntStream here 84 | */ 85 | Arrays.stream(new int[] { 1, 2, 3 }) 86 | .map(n -> 2 * n + 1) 87 | .average() 88 | .ifPresent(System.out::println); 89 | //OR 90 | IntStream.of(20, 30, 10, 40) 91 | .average() 92 | .ifPresent(System.out::println); 93 | 94 | //5.0: With object: see LambdaStreamCollectorExample 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/model/Student.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.model; 2 | 3 | import java.util.Date; 4 | 5 | import javax.persistence.Column; 6 | import javax.persistence.Entity; 7 | import javax.persistence.GeneratedValue; 8 | import javax.persistence.Id; 9 | import javax.persistence.Table; 10 | import javax.persistence.Transient; 11 | 12 | import org.springframework.web.multipart.MultipartFile; 13 | 14 | import lombok.Data; 15 | 16 | @Data 17 | @Entity 18 | @Table(name = "student") 19 | public class Student { 20 | 21 | @Id 22 | @GeneratedValue 23 | private Long id; 24 | 25 | @Column(name = "first_name") 26 | private String firstName; 27 | 28 | @Column(name = "last_name") 29 | private String lastName; 30 | 31 | @Column(name = "roll_no") 32 | private String rollNo; 33 | 34 | @Column(name = "college_name") 35 | private String collegeName; 36 | 37 | @Column(name = "subject") 38 | private String subject; 39 | 40 | @Column(name = "birth_date") 41 | private Date birthDate; 42 | 43 | @Column(name = "image_name") 44 | private String imageName; 45 | 46 | @Column(name = "fee") 47 | private Double fee; 48 | 49 | @Transient 50 | private MultipartFile file; 51 | 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/model/User.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.model; 2 | 3 | import javax.persistence.Column; 4 | import javax.persistence.Entity; 5 | import javax.persistence.GeneratedValue; 6 | import javax.persistence.Id; 7 | import javax.persistence.Table; 8 | 9 | import lombok.Data; 10 | 11 | @Data 12 | @Entity 13 | @Table(name = "user") 14 | public class User { 15 | 16 | @Id 17 | @GeneratedValue 18 | private Long id; 19 | 20 | @Column(name="username") 21 | private String username; 22 | 23 | @Column(name = "password") 24 | private String password; 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/service/FileStorageService.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.service; 2 | 3 | import java.io.File; 4 | import java.io.FileOutputStream; 5 | 6 | import org.springframework.stereotype.Service; 7 | import org.springframework.web.multipart.MultipartFile; 8 | 9 | @Service 10 | public class FileStorageService { 11 | 12 | public static final String FILE_PATH = "D:\\upload\\"; 13 | 14 | public void saveFile(MultipartFile file) { 15 | // Save file in drive 16 | try { 17 | /* 18 | FileOutputStream out = new FileOutputStream(FILE_PATH + file.getOriginalFilename()); 19 | out.write(file.getBytes()); 20 | out.close(); 21 | */ 22 | 23 | // OR 24 | file.transferTo(new File(FILE_PATH + file.getOriginalFilename())); 25 | 26 | } catch (Exception e) { 27 | e.printStackTrace(); 28 | } 29 | 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/javastud/springmvcweb/service/ServiceUtils.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.service; 2 | 3 | import java.time.ZoneId; 4 | import java.time.ZonedDateTime; 5 | import java.util.List; 6 | import java.util.stream.Collectors; 7 | import java.util.stream.Stream; 8 | 9 | public class ServiceUtils { 10 | 11 | public List getCountries() { 12 | List countries = Stream.of("Nepal", "Bhutan", "China", "Japan", "America").sorted() 13 | .collect(Collectors.toList()); 14 | return countries; 15 | } 16 | 17 | public ZonedDateTime getCurrentUtcDateTime() { 18 | ZoneId utcTimeZone = ZoneId.of("Etc/UTC"); 19 | ZonedDateTime zonedDateTime = ZonedDateTime.now(utcTimeZone); 20 | return zonedDateTime; 21 | } 22 | 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/main/resources/log4j.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /src/main/resources/startbootstrap-simple-sidebar-gh-pages.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yrojha4ever/JavaStudSpringMVCWeb/570b1f3744967e3fa4da9279159c96631326655c/src/main/resources/startbootstrap-simple-sidebar-gh-pages.zip -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | com.javastud.springmvcweb.model 49 | 50 | 51 | 52 | 53 | org.hibernate.dialect.MySQLDialect 54 | true 55 | update 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/spring/root-context.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/views/about.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | Loading the data just for you. 11 |
12 | 13 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/views/angularSimpleApp.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 |
11 |

Hello {{yourName}}!

12 | 13 |
14 | 15 | 16 | 17 |
18 | 19 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/views/currency.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 3 | 4 | 5 | 6 | 7 | 8 |

Currency

9 | 10 |
11 | 12 |
    13 |
  • 14 | 17 |
  • 18 |
19 | 20 |
21 | 22 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/views/fileUpload.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 3 | 4 | 5 | 6 | File Upload Example: 7 |
8 | File to Upload: 9 | 10 |

11 | Press here to upload file! 12 |
13 | 14 |

15 | 16 | 17 |


18 |
19 | 20 | 25 | 26 |
27 | 28 | 29 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/views/footer.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 15 | 16 | 17 | 23 | 24 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/views/header.jsp: -------------------------------------------------------------------------------- 1 | 2 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 3 | 4 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 5 | <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> 6 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> 7 | <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> 8 | 9 | 10 | 11 | 12 | Spring MVC Web: JavaStud 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 63 | 64 | 65 | 66 |
67 |
68 |
69 |
70 |
71 | 72 |
73 |
74 |

Welcome: <%=session.getAttribute("activeUser")%>    |    Logout User

75 |
76 |
77 |
78 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/views/home.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | 3 | 4 | 5 | Spring MVC Web: JavaStud 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 38 | 39 | 40 | 41 |
42 |
43 |
44 | 45 |
46 |
47 | 48 | 49 | 50 |
51 |
52 |
53 |
54 | 55 | 56 |
57 | 58 | 59 | 60 | 61 | 62 | 63 | 69 | 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/views/index.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | 3 | 4 | 5 | Spring MVC Web: JavaStud 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 38 | 39 | 40 | 41 |
42 |
43 |
44 | 45 |
46 |
47 | 48 |

Sample Demo for Sidebar Menu

49 | 50 |
51 |
52 |
53 |
54 | 55 | 56 |
57 | 58 | 59 | 60 | 61 | 62 | 63 | 69 | 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/views/login.jsp: -------------------------------------------------------------------------------- 1 | 2 | <%@ page language="java" contentType="text/html; charset=ISO-8859-1" 3 | pageEncoding="ISO-8859-1"%> 4 | 5 | 6 | 7 | 8 | Login 9 | 10 | 11 | 12 | 17 | 18 | 19 | 20 | 21 |

${loginError}

22 | 23 |
24 |
25 |
    26 |
  • 27 | 28 | 29 |
  • 30 |
  • 31 | 32 |
  • 33 |
  • 34 | 35 |
  • 36 |
37 |
38 |
39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/views/profile.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 3 | 4 | 5 | Go To Student Form 6 | 7 |
8 | File Upload Example 9 | 10 |
11 | Rest API Example 12 | 13 |
14 | Angular App 15 | 16 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/views/rest.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 3 | 4 | 5 |

Rest Call Example:

6 | 7 | 8 | 9 |

10 |
11 | 12 |
13 | 14 |
Today's Currency Rate
15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
Base USD() Rate
23 |
24 | 25 | 26 | 70 | 71 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/views/studentForm.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 3 | <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> 4 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> 5 | <%@taglib prefix="form" uri="http://www.springframework.org/tags/form"%> 6 | 7 | 8 | 9 | 10 |

Student Information

11 | 14 |
15 | 16 |
17 | Student Details 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 |
IDNameBirth DateRoll NoSubjectCollege NameFee
${row.id } 38 | 40 | 42 | 43 | ${row.firstName },   ${row.lastName }${row.rollNo }${row.subject }${row.collegeName }${row.fee }
55 | 56 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/views/studentFormDialog.jsp: -------------------------------------------------------------------------------- 1 | 2 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 3 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 4 | <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> 5 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> 6 | <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> 7 | 8 | 72 | 73 | 74 | 87 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | contextConfigLocation 9 | /WEB-INF/spring/root-context.xml 10 | 11 | 12 | 13 | 14 | org.springframework.web.context.ContextLoaderListener 15 | 16 | 17 | 18 | 19 | appServlet 20 | org.springframework.web.servlet.DispatcherServlet 21 | 22 | contextConfigLocation 23 | /WEB-INF/spring/appServlet/servlet-context.xml 24 | 25 | 1 26 | 27 | 28 | 29 | appServlet 30 | / 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /src/main/webapp/resources/css/bootstrap-theme.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.3.6 (http://getbootstrap.com) 3 | * Copyright 2011-2015 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | .btn-default, 7 | .btn-primary, 8 | .btn-success, 9 | .btn-info, 10 | .btn-warning, 11 | .btn-danger { 12 | text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); 13 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); 14 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); 15 | } 16 | .btn-default:active, 17 | .btn-primary:active, 18 | .btn-success:active, 19 | .btn-info:active, 20 | .btn-warning:active, 21 | .btn-danger:active, 22 | .btn-default.active, 23 | .btn-primary.active, 24 | .btn-success.active, 25 | .btn-info.active, 26 | .btn-warning.active, 27 | .btn-danger.active { 28 | -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); 29 | box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); 30 | } 31 | .btn-default.disabled, 32 | .btn-primary.disabled, 33 | .btn-success.disabled, 34 | .btn-info.disabled, 35 | .btn-warning.disabled, 36 | .btn-danger.disabled, 37 | .btn-default[disabled], 38 | .btn-primary[disabled], 39 | .btn-success[disabled], 40 | .btn-info[disabled], 41 | .btn-warning[disabled], 42 | .btn-danger[disabled], 43 | fieldset[disabled] .btn-default, 44 | fieldset[disabled] .btn-primary, 45 | fieldset[disabled] .btn-success, 46 | fieldset[disabled] .btn-info, 47 | fieldset[disabled] .btn-warning, 48 | fieldset[disabled] .btn-danger { 49 | -webkit-box-shadow: none; 50 | box-shadow: none; 51 | } 52 | .btn-default .badge, 53 | .btn-primary .badge, 54 | .btn-success .badge, 55 | .btn-info .badge, 56 | .btn-warning .badge, 57 | .btn-danger .badge { 58 | text-shadow: none; 59 | } 60 | .btn:active, 61 | .btn.active { 62 | background-image: none; 63 | } 64 | .btn-default { 65 | text-shadow: 0 1px 0 #fff; 66 | background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%); 67 | background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%); 68 | background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0)); 69 | background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%); 70 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); 71 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 72 | background-repeat: repeat-x; 73 | border-color: #dbdbdb; 74 | border-color: #ccc; 75 | } 76 | .btn-default:hover, 77 | .btn-default:focus { 78 | background-color: #e0e0e0; 79 | background-position: 0 -15px; 80 | } 81 | .btn-default:active, 82 | .btn-default.active { 83 | background-color: #e0e0e0; 84 | border-color: #dbdbdb; 85 | } 86 | .btn-default.disabled, 87 | .btn-default[disabled], 88 | fieldset[disabled] .btn-default, 89 | .btn-default.disabled:hover, 90 | .btn-default[disabled]:hover, 91 | fieldset[disabled] .btn-default:hover, 92 | .btn-default.disabled:focus, 93 | .btn-default[disabled]:focus, 94 | fieldset[disabled] .btn-default:focus, 95 | .btn-default.disabled.focus, 96 | .btn-default[disabled].focus, 97 | fieldset[disabled] .btn-default.focus, 98 | .btn-default.disabled:active, 99 | .btn-default[disabled]:active, 100 | fieldset[disabled] .btn-default:active, 101 | .btn-default.disabled.active, 102 | .btn-default[disabled].active, 103 | fieldset[disabled] .btn-default.active { 104 | background-color: #e0e0e0; 105 | background-image: none; 106 | } 107 | .btn-primary { 108 | background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%); 109 | background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%); 110 | background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88)); 111 | background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%); 112 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0); 113 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 114 | background-repeat: repeat-x; 115 | border-color: #245580; 116 | } 117 | .btn-primary:hover, 118 | .btn-primary:focus { 119 | background-color: #265a88; 120 | background-position: 0 -15px; 121 | } 122 | .btn-primary:active, 123 | .btn-primary.active { 124 | background-color: #265a88; 125 | border-color: #245580; 126 | } 127 | .btn-primary.disabled, 128 | .btn-primary[disabled], 129 | fieldset[disabled] .btn-primary, 130 | .btn-primary.disabled:hover, 131 | .btn-primary[disabled]:hover, 132 | fieldset[disabled] .btn-primary:hover, 133 | .btn-primary.disabled:focus, 134 | .btn-primary[disabled]:focus, 135 | fieldset[disabled] .btn-primary:focus, 136 | .btn-primary.disabled.focus, 137 | .btn-primary[disabled].focus, 138 | fieldset[disabled] .btn-primary.focus, 139 | .btn-primary.disabled:active, 140 | .btn-primary[disabled]:active, 141 | fieldset[disabled] .btn-primary:active, 142 | .btn-primary.disabled.active, 143 | .btn-primary[disabled].active, 144 | fieldset[disabled] .btn-primary.active { 145 | background-color: #265a88; 146 | background-image: none; 147 | } 148 | .btn-success { 149 | background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%); 150 | background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%); 151 | background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641)); 152 | background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%); 153 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0); 154 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 155 | background-repeat: repeat-x; 156 | border-color: #3e8f3e; 157 | } 158 | .btn-success:hover, 159 | .btn-success:focus { 160 | background-color: #419641; 161 | background-position: 0 -15px; 162 | } 163 | .btn-success:active, 164 | .btn-success.active { 165 | background-color: #419641; 166 | border-color: #3e8f3e; 167 | } 168 | .btn-success.disabled, 169 | .btn-success[disabled], 170 | fieldset[disabled] .btn-success, 171 | .btn-success.disabled:hover, 172 | .btn-success[disabled]:hover, 173 | fieldset[disabled] .btn-success:hover, 174 | .btn-success.disabled:focus, 175 | .btn-success[disabled]:focus, 176 | fieldset[disabled] .btn-success:focus, 177 | .btn-success.disabled.focus, 178 | .btn-success[disabled].focus, 179 | fieldset[disabled] .btn-success.focus, 180 | .btn-success.disabled:active, 181 | .btn-success[disabled]:active, 182 | fieldset[disabled] .btn-success:active, 183 | .btn-success.disabled.active, 184 | .btn-success[disabled].active, 185 | fieldset[disabled] .btn-success.active { 186 | background-color: #419641; 187 | background-image: none; 188 | } 189 | .btn-info { 190 | background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); 191 | background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); 192 | background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2)); 193 | background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%); 194 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0); 195 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 196 | background-repeat: repeat-x; 197 | border-color: #28a4c9; 198 | } 199 | .btn-info:hover, 200 | .btn-info:focus { 201 | background-color: #2aabd2; 202 | background-position: 0 -15px; 203 | } 204 | .btn-info:active, 205 | .btn-info.active { 206 | background-color: #2aabd2; 207 | border-color: #28a4c9; 208 | } 209 | .btn-info.disabled, 210 | .btn-info[disabled], 211 | fieldset[disabled] .btn-info, 212 | .btn-info.disabled:hover, 213 | .btn-info[disabled]:hover, 214 | fieldset[disabled] .btn-info:hover, 215 | .btn-info.disabled:focus, 216 | .btn-info[disabled]:focus, 217 | fieldset[disabled] .btn-info:focus, 218 | .btn-info.disabled.focus, 219 | .btn-info[disabled].focus, 220 | fieldset[disabled] .btn-info.focus, 221 | .btn-info.disabled:active, 222 | .btn-info[disabled]:active, 223 | fieldset[disabled] .btn-info:active, 224 | .btn-info.disabled.active, 225 | .btn-info[disabled].active, 226 | fieldset[disabled] .btn-info.active { 227 | background-color: #2aabd2; 228 | background-image: none; 229 | } 230 | .btn-warning { 231 | background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); 232 | background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); 233 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316)); 234 | background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%); 235 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0); 236 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 237 | background-repeat: repeat-x; 238 | border-color: #e38d13; 239 | } 240 | .btn-warning:hover, 241 | .btn-warning:focus { 242 | background-color: #eb9316; 243 | background-position: 0 -15px; 244 | } 245 | .btn-warning:active, 246 | .btn-warning.active { 247 | background-color: #eb9316; 248 | border-color: #e38d13; 249 | } 250 | .btn-warning.disabled, 251 | .btn-warning[disabled], 252 | fieldset[disabled] .btn-warning, 253 | .btn-warning.disabled:hover, 254 | .btn-warning[disabled]:hover, 255 | fieldset[disabled] .btn-warning:hover, 256 | .btn-warning.disabled:focus, 257 | .btn-warning[disabled]:focus, 258 | fieldset[disabled] .btn-warning:focus, 259 | .btn-warning.disabled.focus, 260 | .btn-warning[disabled].focus, 261 | fieldset[disabled] .btn-warning.focus, 262 | .btn-warning.disabled:active, 263 | .btn-warning[disabled]:active, 264 | fieldset[disabled] .btn-warning:active, 265 | .btn-warning.disabled.active, 266 | .btn-warning[disabled].active, 267 | fieldset[disabled] .btn-warning.active { 268 | background-color: #eb9316; 269 | background-image: none; 270 | } 271 | .btn-danger { 272 | background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%); 273 | background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%); 274 | background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a)); 275 | background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%); 276 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0); 277 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 278 | background-repeat: repeat-x; 279 | border-color: #b92c28; 280 | } 281 | .btn-danger:hover, 282 | .btn-danger:focus { 283 | background-color: #c12e2a; 284 | background-position: 0 -15px; 285 | } 286 | .btn-danger:active, 287 | .btn-danger.active { 288 | background-color: #c12e2a; 289 | border-color: #b92c28; 290 | } 291 | .btn-danger.disabled, 292 | .btn-danger[disabled], 293 | fieldset[disabled] .btn-danger, 294 | .btn-danger.disabled:hover, 295 | .btn-danger[disabled]:hover, 296 | fieldset[disabled] .btn-danger:hover, 297 | .btn-danger.disabled:focus, 298 | .btn-danger[disabled]:focus, 299 | fieldset[disabled] .btn-danger:focus, 300 | .btn-danger.disabled.focus, 301 | .btn-danger[disabled].focus, 302 | fieldset[disabled] .btn-danger.focus, 303 | .btn-danger.disabled:active, 304 | .btn-danger[disabled]:active, 305 | fieldset[disabled] .btn-danger:active, 306 | .btn-danger.disabled.active, 307 | .btn-danger[disabled].active, 308 | fieldset[disabled] .btn-danger.active { 309 | background-color: #c12e2a; 310 | background-image: none; 311 | } 312 | .thumbnail, 313 | .img-thumbnail { 314 | -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); 315 | box-shadow: 0 1px 2px rgba(0, 0, 0, .075); 316 | } 317 | .dropdown-menu > li > a:hover, 318 | .dropdown-menu > li > a:focus { 319 | background-color: #e8e8e8; 320 | background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); 321 | background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); 322 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); 323 | background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); 324 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); 325 | background-repeat: repeat-x; 326 | } 327 | .dropdown-menu > .active > a, 328 | .dropdown-menu > .active > a:hover, 329 | .dropdown-menu > .active > a:focus { 330 | background-color: #2e6da4; 331 | background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); 332 | background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); 333 | background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); 334 | background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); 335 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); 336 | background-repeat: repeat-x; 337 | } 338 | .navbar-default { 339 | background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%); 340 | background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%); 341 | background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8)); 342 | background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%); 343 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); 344 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 345 | background-repeat: repeat-x; 346 | border-radius: 4px; 347 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); 348 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); 349 | } 350 | .navbar-default .navbar-nav > .open > a, 351 | .navbar-default .navbar-nav > .active > a { 352 | background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); 353 | background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); 354 | background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2)); 355 | background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%); 356 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0); 357 | background-repeat: repeat-x; 358 | -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); 359 | box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); 360 | } 361 | .navbar-brand, 362 | .navbar-nav > li > a { 363 | text-shadow: 0 1px 0 rgba(255, 255, 255, .25); 364 | } 365 | .navbar-inverse { 366 | background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%); 367 | background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%); 368 | background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222)); 369 | background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%); 370 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); 371 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 372 | background-repeat: repeat-x; 373 | border-radius: 4px; 374 | } 375 | .navbar-inverse .navbar-nav > .open > a, 376 | .navbar-inverse .navbar-nav > .active > a { 377 | background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%); 378 | background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%); 379 | background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f)); 380 | background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%); 381 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0); 382 | background-repeat: repeat-x; 383 | -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); 384 | box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); 385 | } 386 | .navbar-inverse .navbar-brand, 387 | .navbar-inverse .navbar-nav > li > a { 388 | text-shadow: 0 -1px 0 rgba(0, 0, 0, .25); 389 | } 390 | .navbar-static-top, 391 | .navbar-fixed-top, 392 | .navbar-fixed-bottom { 393 | border-radius: 0; 394 | } 395 | @media (max-width: 767px) { 396 | .navbar .navbar-nav .open .dropdown-menu > .active > a, 397 | .navbar .navbar-nav .open .dropdown-menu > .active > a:hover, 398 | .navbar .navbar-nav .open .dropdown-menu > .active > a:focus { 399 | color: #fff; 400 | background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); 401 | background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); 402 | background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); 403 | background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); 404 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); 405 | background-repeat: repeat-x; 406 | } 407 | } 408 | .alert { 409 | text-shadow: 0 1px 0 rgba(255, 255, 255, .2); 410 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); 411 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); 412 | } 413 | .alert-success { 414 | background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); 415 | background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); 416 | background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc)); 417 | background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); 418 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); 419 | background-repeat: repeat-x; 420 | border-color: #b2dba1; 421 | } 422 | .alert-info { 423 | background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); 424 | background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%); 425 | background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0)); 426 | background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); 427 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); 428 | background-repeat: repeat-x; 429 | border-color: #9acfea; 430 | } 431 | .alert-warning { 432 | background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); 433 | background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); 434 | background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0)); 435 | background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); 436 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); 437 | background-repeat: repeat-x; 438 | border-color: #f5e79e; 439 | } 440 | .alert-danger { 441 | background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); 442 | background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); 443 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3)); 444 | background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); 445 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); 446 | background-repeat: repeat-x; 447 | border-color: #dca7a7; 448 | } 449 | .progress { 450 | background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); 451 | background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); 452 | background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5)); 453 | background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); 454 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); 455 | background-repeat: repeat-x; 456 | } 457 | .progress-bar { 458 | background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%); 459 | background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%); 460 | background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090)); 461 | background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%); 462 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0); 463 | background-repeat: repeat-x; 464 | } 465 | .progress-bar-success { 466 | background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%); 467 | background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%); 468 | background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44)); 469 | background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); 470 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); 471 | background-repeat: repeat-x; 472 | } 473 | .progress-bar-info { 474 | background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); 475 | background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); 476 | background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5)); 477 | background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); 478 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); 479 | background-repeat: repeat-x; 480 | } 481 | .progress-bar-warning { 482 | background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); 483 | background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); 484 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f)); 485 | background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); 486 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); 487 | background-repeat: repeat-x; 488 | } 489 | .progress-bar-danger { 490 | background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%); 491 | background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%); 492 | background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c)); 493 | background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); 494 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); 495 | background-repeat: repeat-x; 496 | } 497 | .progress-bar-striped { 498 | background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); 499 | background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); 500 | background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); 501 | } 502 | .list-group { 503 | border-radius: 4px; 504 | -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); 505 | box-shadow: 0 1px 2px rgba(0, 0, 0, .075); 506 | } 507 | .list-group-item.active, 508 | .list-group-item.active:hover, 509 | .list-group-item.active:focus { 510 | text-shadow: 0 -1px 0 #286090; 511 | background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%); 512 | background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%); 513 | background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a)); 514 | background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%); 515 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0); 516 | background-repeat: repeat-x; 517 | border-color: #2b669a; 518 | } 519 | .list-group-item.active .badge, 520 | .list-group-item.active:hover .badge, 521 | .list-group-item.active:focus .badge { 522 | text-shadow: none; 523 | } 524 | .panel { 525 | -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05); 526 | box-shadow: 0 1px 2px rgba(0, 0, 0, .05); 527 | } 528 | .panel-default > .panel-heading { 529 | background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); 530 | background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); 531 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); 532 | background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); 533 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); 534 | background-repeat: repeat-x; 535 | } 536 | .panel-primary > .panel-heading { 537 | background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); 538 | background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); 539 | background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); 540 | background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); 541 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); 542 | background-repeat: repeat-x; 543 | } 544 | .panel-success > .panel-heading { 545 | background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); 546 | background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); 547 | background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6)); 548 | background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); 549 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); 550 | background-repeat: repeat-x; 551 | } 552 | .panel-info > .panel-heading { 553 | background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); 554 | background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); 555 | background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3)); 556 | background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); 557 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); 558 | background-repeat: repeat-x; 559 | } 560 | .panel-warning > .panel-heading { 561 | background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); 562 | background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); 563 | background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc)); 564 | background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); 565 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); 566 | background-repeat: repeat-x; 567 | } 568 | .panel-danger > .panel-heading { 569 | background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%); 570 | background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%); 571 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc)); 572 | background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); 573 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); 574 | background-repeat: repeat-x; 575 | } 576 | .well { 577 | background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); 578 | background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); 579 | background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5)); 580 | background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); 581 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); 582 | background-repeat: repeat-x; 583 | border-color: #dcdcdc; 584 | -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); 585 | box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); 586 | } 587 | /*# sourceMappingURL=bootstrap-theme.css.map */ 588 | -------------------------------------------------------------------------------- /src/main/webapp/resources/css/bootstrap-theme.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.3.6 (http://getbootstrap.com) 3 | * Copyright 2011-2015 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} 6 | /*# sourceMappingURL=bootstrap-theme.min.css.map */ -------------------------------------------------------------------------------- /src/main/webapp/resources/css/bootstrap-theme.min.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":";;;;AAmBA,YAAA,aAAA,UAAA,aAAA,aAAA,aAME,YAAA,EAAA,KAAA,EAAA,eC2CA,mBAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,iBDvCR,mBAAA,mBAAA,oBAAA,oBAAA,iBAAA,iBAAA,oBAAA,oBAAA,oBAAA,oBAAA,oBAAA,oBCsCA,mBAAA,MAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,iBDlCR,qBAAA,sBAAA,sBAAA,uBAAA,mBAAA,oBAAA,sBAAA,uBAAA,sBAAA,uBAAA,sBAAA,uBAAA,+BAAA,gCAAA,6BAAA,gCAAA,gCAAA,gCCiCA,mBAAA,KACQ,WAAA,KDlDV,mBAAA,oBAAA,iBAAA,oBAAA,oBAAA,oBAuBI,YAAA,KAyCF,YAAA,YAEE,iBAAA,KAKJ,aErEI,YAAA,EAAA,IAAA,EAAA,KACA,iBAAA,iDACA,iBAAA,4CAAA,iBAAA,qEAEA,iBAAA,+CCnBF,OAAA,+GH4CA,OAAA,0DACA,kBAAA,SAuC2C,aAAA,QAA2B,aAAA,KArCtE,mBAAA,mBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,oBAAA,oBAEE,iBAAA,QACA,aAAA,QAMA,sBAAA,6BAAA,4BAAA,6BAAA,4BAAA,4BAAA,uBAAA,8BAAA,6BAAA,8BAAA,6BAAA,6BAAA,gCAAA,uCAAA,sCAAA,uCAAA,sCAAA,sCAME,iBAAA,QACA,iBAAA,KAgBN,aEtEI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDAEA,OAAA,+GCnBF,OAAA,0DH4CA,kBAAA,SACA,aAAA,QAEA,mBAAA,mBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,oBAAA,oBAEE,iBAAA,QACA,aAAA,QAMA,sBAAA,6BAAA,4BAAA,6BAAA,4BAAA,4BAAA,uBAAA,8BAAA,6BAAA,8BAAA,6BAAA,6BAAA,gCAAA,uCAAA,sCAAA,uCAAA,sCAAA,sCAME,iBAAA,QACA,iBAAA,KAiBN,aEvEI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDAEA,OAAA,+GCnBF,OAAA,0DH4CA,kBAAA,SACA,aAAA,QAEA,mBAAA,mBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,oBAAA,oBAEE,iBAAA,QACA,aAAA,QAMA,sBAAA,6BAAA,4BAAA,6BAAA,4BAAA,4BAAA,uBAAA,8BAAA,6BAAA,8BAAA,6BAAA,6BAAA,gCAAA,uCAAA,sCAAA,uCAAA,sCAAA,sCAME,iBAAA,QACA,iBAAA,KAkBN,UExEI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDAEA,OAAA,+GCnBF,OAAA,0DH4CA,kBAAA,SACA,aAAA,QAEA,gBAAA,gBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,iBAAA,iBAEE,iBAAA,QACA,aAAA,QAMA,mBAAA,0BAAA,yBAAA,0BAAA,yBAAA,yBAAA,oBAAA,2BAAA,0BAAA,2BAAA,0BAAA,0BAAA,6BAAA,oCAAA,mCAAA,oCAAA,mCAAA,mCAME,iBAAA,QACA,iBAAA,KAmBN,aEzEI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDAEA,OAAA,+GCnBF,OAAA,0DH4CA,kBAAA,SACA,aAAA,QAEA,mBAAA,mBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,oBAAA,oBAEE,iBAAA,QACA,aAAA,QAMA,sBAAA,6BAAA,4BAAA,6BAAA,4BAAA,4BAAA,uBAAA,8BAAA,6BAAA,8BAAA,6BAAA,6BAAA,gCAAA,uCAAA,sCAAA,uCAAA,sCAAA,sCAME,iBAAA,QACA,iBAAA,KAoBN,YE1EI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDAEA,OAAA,+GCnBF,OAAA,0DH4CA,kBAAA,SACA,aAAA,QAEA,kBAAA,kBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,mBAAA,mBAEE,iBAAA,QACA,aAAA,QAMA,qBAAA,4BAAA,2BAAA,4BAAA,2BAAA,2BAAA,sBAAA,6BAAA,4BAAA,6BAAA,4BAAA,4BAAA,+BAAA,sCAAA,qCAAA,sCAAA,qCAAA,qCAME,iBAAA,QACA,iBAAA,KA2BN,eAAA,WClCE,mBAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,EAAA,IAAA,IAAA,iBD2CV,0BAAA,0BE3FI,iBAAA,QACA,iBAAA,oDACA,iBAAA,+CAAA,iBAAA,wEACA,iBAAA,kDACA,OAAA,+GF0FF,kBAAA,SAEF,yBAAA,+BAAA,+BEhGI,iBAAA,QACA,iBAAA,oDACA,iBAAA,+CAAA,iBAAA,wEACA,iBAAA,kDACA,OAAA,+GFgGF,kBAAA,SASF,gBE7GI,iBAAA,iDACA,iBAAA,4CACA,iBAAA,qEAAA,iBAAA,+CACA,OAAA,+GACA,OAAA,0DCnBF,kBAAA,SH+HA,cAAA,ICjEA,mBAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,iBD6DV,sCAAA,oCE7GI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SD2CF,mBAAA,MAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,iBD0EV,cAAA,iBAEE,YAAA,EAAA,IAAA,EAAA,sBAIF,gBEhII,iBAAA,iDACA,iBAAA,4CACA,iBAAA,qEAAA,iBAAA,+CACA,OAAA,+GACA,OAAA,0DCnBF,kBAAA,SHkJA,cAAA,IAHF,sCAAA,oCEhII,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SD2CF,mBAAA,MAAA,EAAA,IAAA,IAAA,gBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,gBDgFV,8BAAA,iCAYI,YAAA,EAAA,KAAA,EAAA,gBAKJ,qBAAA,kBAAA,mBAGE,cAAA,EAqBF,yBAfI,mDAAA,yDAAA,yDAGE,MAAA,KE7JF,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,UFqKJ,OACE,YAAA,EAAA,IAAA,EAAA,qBC3HA,mBAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,gBACQ,WAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,gBDsIV,eEtLI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF8KF,aAAA,QAKF,YEvLI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF8KF,aAAA,QAMF,eExLI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF8KF,aAAA,QAOF,cEzLI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF8KF,aAAA,QAeF,UEjMI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFuMJ,cE3MI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFwMJ,sBE5MI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFyMJ,mBE7MI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF0MJ,sBE9MI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF2MJ,qBE/MI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF+MJ,sBElLI,iBAAA,yKACA,iBAAA,oKACA,iBAAA,iKFyLJ,YACE,cAAA,IC9KA,mBAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,EAAA,IAAA,IAAA,iBDgLV,wBAAA,8BAAA,8BAGE,YAAA,EAAA,KAAA,EAAA,QEnOE,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFiOF,aAAA,QALF,+BAAA,qCAAA,qCAQI,YAAA,KAUJ,OCnME,mBAAA,EAAA,IAAA,IAAA,gBACQ,WAAA,EAAA,IAAA,IAAA,gBD4MV,8BE5PI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFyPJ,8BE7PI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF0PJ,8BE9PI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF2PJ,2BE/PI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF4PJ,8BEhQI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF6PJ,6BEjQI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFoQJ,MExQI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFsQF,aAAA,QC3NA,mBAAA,MAAA,EAAA,IAAA,IAAA,gBAAA,EAAA,IAAA,EAAA,qBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,gBAAA,EAAA,IAAA,EAAA"} -------------------------------------------------------------------------------- /src/main/webapp/resources/css/github-calendar.css: -------------------------------------------------------------------------------- 1 | .calendar { 2 | width: 750px; 3 | font-family: Helvetica, arial; 4 | border: 1px solid #DDDDDD; 5 | border-radius: 3px; 6 | min-height: 243px; 7 | text-align: center; 8 | margin: 0 auto; 9 | } 10 | 11 | .calendar-graph text.wday, 12 | .calendar-graph text.month { 13 | font-size: 10px; 14 | fill: #aaa; 15 | } 16 | 17 | .contrib-legend { 18 | text-align: right; 19 | padding: 0 14px 10px 0; 20 | display: inline-block; 21 | float: right; 22 | } 23 | 24 | .contrib-legend .legend { 25 | display: inline-block; 26 | list-style: none; 27 | margin: 0 5px; 28 | position: relative; 29 | bottom: -1px; 30 | padding: 0; 31 | } 32 | 33 | .contrib-legend .legend li { 34 | display: inline-block; 35 | width: 10px; 36 | height: 10px; 37 | } 38 | 39 | .text-small { 40 | font-size: 12px; 41 | color: #767676; 42 | } 43 | 44 | .calendar-graph { 45 | padding: 5px 0 0; 46 | height: 126px; 47 | text-align: center; 48 | } 49 | 50 | .contrib-column { 51 | padding: 15px 0; 52 | text-align: center; 53 | border-left: 1px solid #ddd; 54 | border-top: 1px solid #ddd; 55 | font-size: 11px; 56 | } 57 | 58 | .contrib-column-first { 59 | border-left: 0; 60 | } 61 | 62 | .table-column { 63 | display: table-cell; 64 | width: 1%; 65 | padding-right: 10px; 66 | padding-left: 10px; 67 | vertical-align: top; 68 | } 69 | 70 | .contrib-number { 71 | font-weight: 300; 72 | line-height: 1.3em; 73 | font-size: 24px; 74 | display: block; 75 | color: #333; 76 | } 77 | 78 | .calendar img.spinner { 79 | width: 70px; 80 | margin-top: 50px; 81 | min-height: 70px; 82 | } 83 | 84 | .monospace { 85 | text-align: center; 86 | color: #000; 87 | font-family: monospace; 88 | } 89 | 90 | .monospace a { 91 | color: #1D75AB; 92 | text-decoration: none; 93 | } 94 | 95 | .contrib-footer { 96 | font-size: 11px; 97 | padding: 0 10px 12px; 98 | text-align: left; 99 | width: 100%; 100 | box-sizing: border-box; 101 | height: 26px; 102 | } 103 | 104 | .left.text-muted { 105 | float: left; 106 | margin-left: 9px; 107 | color: #767676; 108 | } 109 | .left.text-muted a { 110 | color: #4078c0; 111 | text-decoration: none; 112 | } 113 | .left.text-muted a:hover, 114 | .monospace a:hover { 115 | text-decoration: underline; 116 | } 117 | 118 | h2.f4.text-normal.mb-3 { 119 | display: none; 120 | } 121 | 122 | .float-left.text-gray { 123 | float: left; 124 | } -------------------------------------------------------------------------------- /src/main/webapp/resources/css/jquery.dataTables.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Table styles 3 | */ 4 | table.dataTable { 5 | width: 100%; 6 | margin: 0 auto; 7 | clear: both; 8 | border-collapse: separate; 9 | border-spacing: 0; 10 | /* 11 | * Header and footer styles 12 | */ 13 | /* 14 | * Body styles 15 | */ 16 | } 17 | table.dataTable thead th, 18 | table.dataTable tfoot th { 19 | font-weight: bold; 20 | } 21 | table.dataTable thead th, 22 | table.dataTable thead td { 23 | padding: 10px 18px; 24 | border-bottom: 1px solid #111; 25 | } 26 | table.dataTable thead th:active, 27 | table.dataTable thead td:active { 28 | outline: none; 29 | } 30 | table.dataTable tfoot th, 31 | table.dataTable tfoot td { 32 | padding: 10px 18px 6px 18px; 33 | border-top: 1px solid #111; 34 | } 35 | table.dataTable thead .sorting, 36 | table.dataTable thead .sorting_asc, 37 | table.dataTable thead .sorting_desc { 38 | cursor: pointer; 39 | *cursor: hand; 40 | } 41 | table.dataTable thead .sorting, 42 | table.dataTable thead .sorting_asc, 43 | table.dataTable thead .sorting_desc, 44 | table.dataTable thead .sorting_asc_disabled, 45 | table.dataTable thead .sorting_desc_disabled { 46 | background-repeat: no-repeat; 47 | background-position: center right; 48 | } 49 | table.dataTable thead .sorting { 50 | background-image: url("../images/sort_both.png"); 51 | } 52 | table.dataTable thead .sorting_asc { 53 | background-image: url("../images/sort_asc.png"); 54 | } 55 | table.dataTable thead .sorting_desc { 56 | background-image: url("../images/sort_desc.png"); 57 | } 58 | table.dataTable thead .sorting_asc_disabled { 59 | background-image: url("../images/sort_asc_disabled.png"); 60 | } 61 | table.dataTable thead .sorting_desc_disabled { 62 | background-image: url("../images/sort_desc_disabled.png"); 63 | } 64 | table.dataTable tbody tr { 65 | background-color: #ffffff; 66 | } 67 | table.dataTable tbody tr.selected { 68 | background-color: #B0BED9; 69 | } 70 | table.dataTable tbody th, 71 | table.dataTable tbody td { 72 | padding: 8px 10px; 73 | } 74 | table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td { 75 | border-top: 1px solid #ddd; 76 | } 77 | table.dataTable.row-border tbody tr:first-child th, 78 | table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th, 79 | table.dataTable.display tbody tr:first-child td { 80 | border-top: none; 81 | } 82 | table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td { 83 | border-top: 1px solid #ddd; 84 | border-right: 1px solid #ddd; 85 | } 86 | table.dataTable.cell-border tbody tr th:first-child, 87 | table.dataTable.cell-border tbody tr td:first-child { 88 | border-left: 1px solid #ddd; 89 | } 90 | table.dataTable.cell-border tbody tr:first-child th, 91 | table.dataTable.cell-border tbody tr:first-child td { 92 | border-top: none; 93 | } 94 | table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd { 95 | background-color: #f9f9f9; 96 | } 97 | table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected { 98 | background-color: #acbad4; 99 | } 100 | table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover { 101 | background-color: #f6f6f6; 102 | } 103 | table.dataTable.hover tbody tr:hover.selected, table.dataTable.display tbody tr:hover.selected { 104 | background-color: #aab7d1; 105 | } 106 | table.dataTable.order-column tbody tr > .sorting_1, 107 | table.dataTable.order-column tbody tr > .sorting_2, 108 | table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1, 109 | table.dataTable.display tbody tr > .sorting_2, 110 | table.dataTable.display tbody tr > .sorting_3 { 111 | background-color: #fafafa; 112 | } 113 | table.dataTable.order-column tbody tr.selected > .sorting_1, 114 | table.dataTable.order-column tbody tr.selected > .sorting_2, 115 | table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1, 116 | table.dataTable.display tbody tr.selected > .sorting_2, 117 | table.dataTable.display tbody tr.selected > .sorting_3 { 118 | background-color: #acbad5; 119 | } 120 | table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 { 121 | background-color: #f1f1f1; 122 | } 123 | table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 { 124 | background-color: #f3f3f3; 125 | } 126 | table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 { 127 | background-color: whitesmoke; 128 | } 129 | table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 { 130 | background-color: #a6b4cd; 131 | } 132 | table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 { 133 | background-color: #a8b5cf; 134 | } 135 | table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 { 136 | background-color: #a9b7d1; 137 | } 138 | table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 { 139 | background-color: #fafafa; 140 | } 141 | table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 { 142 | background-color: #fcfcfc; 143 | } 144 | table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 { 145 | background-color: #fefefe; 146 | } 147 | table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 { 148 | background-color: #acbad5; 149 | } 150 | table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 { 151 | background-color: #aebcd6; 152 | } 153 | table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 { 154 | background-color: #afbdd8; 155 | } 156 | table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 { 157 | background-color: #eaeaea; 158 | } 159 | table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 { 160 | background-color: #ececec; 161 | } 162 | table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 { 163 | background-color: #efefef; 164 | } 165 | table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 { 166 | background-color: #a2aec7; 167 | } 168 | table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 { 169 | background-color: #a3b0c9; 170 | } 171 | table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 { 172 | background-color: #a5b2cb; 173 | } 174 | table.dataTable.no-footer { 175 | border-bottom: 1px solid #111; 176 | } 177 | table.dataTable.nowrap th, table.dataTable.nowrap td { 178 | white-space: nowrap; 179 | } 180 | table.dataTable.compact thead th, 181 | table.dataTable.compact thead td { 182 | padding: 4px 17px 4px 4px; 183 | } 184 | table.dataTable.compact tfoot th, 185 | table.dataTable.compact tfoot td { 186 | padding: 4px; 187 | } 188 | table.dataTable.compact tbody th, 189 | table.dataTable.compact tbody td { 190 | padding: 4px; 191 | } 192 | table.dataTable th.dt-left, 193 | table.dataTable td.dt-left { 194 | text-align: left; 195 | } 196 | table.dataTable th.dt-center, 197 | table.dataTable td.dt-center, 198 | table.dataTable td.dataTables_empty { 199 | text-align: center; 200 | } 201 | table.dataTable th.dt-right, 202 | table.dataTable td.dt-right { 203 | text-align: right; 204 | } 205 | table.dataTable th.dt-justify, 206 | table.dataTable td.dt-justify { 207 | text-align: justify; 208 | } 209 | table.dataTable th.dt-nowrap, 210 | table.dataTable td.dt-nowrap { 211 | white-space: nowrap; 212 | } 213 | table.dataTable thead th.dt-head-left, 214 | table.dataTable thead td.dt-head-left, 215 | table.dataTable tfoot th.dt-head-left, 216 | table.dataTable tfoot td.dt-head-left { 217 | text-align: left; 218 | } 219 | table.dataTable thead th.dt-head-center, 220 | table.dataTable thead td.dt-head-center, 221 | table.dataTable tfoot th.dt-head-center, 222 | table.dataTable tfoot td.dt-head-center { 223 | text-align: center; 224 | } 225 | table.dataTable thead th.dt-head-right, 226 | table.dataTable thead td.dt-head-right, 227 | table.dataTable tfoot th.dt-head-right, 228 | table.dataTable tfoot td.dt-head-right { 229 | text-align: right; 230 | } 231 | table.dataTable thead th.dt-head-justify, 232 | table.dataTable thead td.dt-head-justify, 233 | table.dataTable tfoot th.dt-head-justify, 234 | table.dataTable tfoot td.dt-head-justify { 235 | text-align: justify; 236 | } 237 | table.dataTable thead th.dt-head-nowrap, 238 | table.dataTable thead td.dt-head-nowrap, 239 | table.dataTable tfoot th.dt-head-nowrap, 240 | table.dataTable tfoot td.dt-head-nowrap { 241 | white-space: nowrap; 242 | } 243 | table.dataTable tbody th.dt-body-left, 244 | table.dataTable tbody td.dt-body-left { 245 | text-align: left; 246 | } 247 | table.dataTable tbody th.dt-body-center, 248 | table.dataTable tbody td.dt-body-center { 249 | text-align: center; 250 | } 251 | table.dataTable tbody th.dt-body-right, 252 | table.dataTable tbody td.dt-body-right { 253 | text-align: right; 254 | } 255 | table.dataTable tbody th.dt-body-justify, 256 | table.dataTable tbody td.dt-body-justify { 257 | text-align: justify; 258 | } 259 | table.dataTable tbody th.dt-body-nowrap, 260 | table.dataTable tbody td.dt-body-nowrap { 261 | white-space: nowrap; 262 | } 263 | 264 | table.dataTable, 265 | table.dataTable th, 266 | table.dataTable td { 267 | -webkit-box-sizing: content-box; 268 | box-sizing: content-box; 269 | } 270 | 271 | /* 272 | * Control feature layout 273 | */ 274 | .dataTables_wrapper { 275 | position: relative; 276 | clear: both; 277 | *zoom: 1; 278 | zoom: 1; 279 | } 280 | .dataTables_wrapper .dataTables_length { 281 | float: left; 282 | } 283 | .dataTables_wrapper .dataTables_filter { 284 | float: right; 285 | text-align: right; 286 | } 287 | .dataTables_wrapper .dataTables_filter input { 288 | margin-left: 0.5em; 289 | } 290 | .dataTables_wrapper .dataTables_info { 291 | clear: both; 292 | float: left; 293 | padding-top: 0.755em; 294 | } 295 | .dataTables_wrapper .dataTables_paginate { 296 | float: right; 297 | text-align: right; 298 | padding-top: 0.25em; 299 | } 300 | .dataTables_wrapper .dataTables_paginate .paginate_button { 301 | box-sizing: border-box; 302 | display: inline-block; 303 | min-width: 1.5em; 304 | padding: 0.5em 1em; 305 | margin-left: 2px; 306 | text-align: center; 307 | text-decoration: none !important; 308 | cursor: pointer; 309 | *cursor: hand; 310 | color: #333 !important; 311 | border: 1px solid transparent; 312 | border-radius: 2px; 313 | } 314 | .dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover { 315 | color: #333 !important; 316 | border: 1px solid #979797; 317 | background-color: white; 318 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc)); 319 | /* Chrome,Safari4+ */ 320 | background: -webkit-linear-gradient(top, white 0%, #dcdcdc 100%); 321 | /* Chrome10+,Safari5.1+ */ 322 | background: -moz-linear-gradient(top, white 0%, #dcdcdc 100%); 323 | /* FF3.6+ */ 324 | background: -ms-linear-gradient(top, white 0%, #dcdcdc 100%); 325 | /* IE10+ */ 326 | background: -o-linear-gradient(top, white 0%, #dcdcdc 100%); 327 | /* Opera 11.10+ */ 328 | background: linear-gradient(to bottom, white 0%, #dcdcdc 100%); 329 | /* W3C */ 330 | } 331 | .dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active { 332 | cursor: default; 333 | color: #666 !important; 334 | border: 1px solid transparent; 335 | background: transparent; 336 | box-shadow: none; 337 | } 338 | .dataTables_wrapper .dataTables_paginate .paginate_button:hover { 339 | color: white !important; 340 | border: 1px solid #111; 341 | background-color: #585858; 342 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111)); 343 | /* Chrome,Safari4+ */ 344 | background: -webkit-linear-gradient(top, #585858 0%, #111 100%); 345 | /* Chrome10+,Safari5.1+ */ 346 | background: -moz-linear-gradient(top, #585858 0%, #111 100%); 347 | /* FF3.6+ */ 348 | background: -ms-linear-gradient(top, #585858 0%, #111 100%); 349 | /* IE10+ */ 350 | background: -o-linear-gradient(top, #585858 0%, #111 100%); 351 | /* Opera 11.10+ */ 352 | background: linear-gradient(to bottom, #585858 0%, #111 100%); 353 | /* W3C */ 354 | } 355 | .dataTables_wrapper .dataTables_paginate .paginate_button:active { 356 | outline: none; 357 | background-color: #2b2b2b; 358 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c)); 359 | /* Chrome,Safari4+ */ 360 | background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); 361 | /* Chrome10+,Safari5.1+ */ 362 | background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); 363 | /* FF3.6+ */ 364 | background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); 365 | /* IE10+ */ 366 | background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); 367 | /* Opera 11.10+ */ 368 | background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%); 369 | /* W3C */ 370 | box-shadow: inset 0 0 3px #111; 371 | } 372 | .dataTables_wrapper .dataTables_paginate .ellipsis { 373 | padding: 0 1em; 374 | } 375 | .dataTables_wrapper .dataTables_processing { 376 | position: absolute; 377 | top: 50%; 378 | left: 50%; 379 | width: 100%; 380 | height: 40px; 381 | margin-left: -50%; 382 | margin-top: -25px; 383 | padding-top: 20px; 384 | text-align: center; 385 | font-size: 1.2em; 386 | background-color: white; 387 | background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0))); 388 | background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); 389 | background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); 390 | background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); 391 | background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); 392 | background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); 393 | } 394 | .dataTables_wrapper .dataTables_length, 395 | .dataTables_wrapper .dataTables_filter, 396 | .dataTables_wrapper .dataTables_info, 397 | .dataTables_wrapper .dataTables_processing, 398 | .dataTables_wrapper .dataTables_paginate { 399 | color: #333; 400 | } 401 | .dataTables_wrapper .dataTables_scroll { 402 | clear: both; 403 | } 404 | .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody { 405 | *margin-top: -1px; 406 | -webkit-overflow-scrolling: touch; 407 | } 408 | .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td { 409 | vertical-align: middle; 410 | } 411 | .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th > div.dataTables_sizing, 412 | .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td > div.dataTables_sizing { 413 | height: 0; 414 | overflow: hidden; 415 | margin: 0 !important; 416 | padding: 0 !important; 417 | } 418 | .dataTables_wrapper.no-footer .dataTables_scrollBody { 419 | border-bottom: 1px solid #111; 420 | } 421 | .dataTables_wrapper.no-footer div.dataTables_scrollHead table, 422 | .dataTables_wrapper.no-footer div.dataTables_scrollBody table { 423 | border-bottom: none; 424 | } 425 | .dataTables_wrapper:after { 426 | visibility: hidden; 427 | display: block; 428 | content: ""; 429 | clear: both; 430 | height: 0; 431 | } 432 | 433 | @media screen and (max-width: 767px) { 434 | .dataTables_wrapper .dataTables_info, 435 | .dataTables_wrapper .dataTables_paginate { 436 | float: none; 437 | text-align: center; 438 | } 439 | .dataTables_wrapper .dataTables_paginate { 440 | margin-top: 0.5em; 441 | } 442 | } 443 | @media screen and (max-width: 640px) { 444 | .dataTables_wrapper .dataTables_length, 445 | .dataTables_wrapper .dataTables_filter { 446 | float: none; 447 | text-align: center; 448 | } 449 | .dataTables_wrapper .dataTables_filter { 450 | margin-top: 0.5em; 451 | } 452 | } 453 | -------------------------------------------------------------------------------- /src/main/webapp/resources/css/simple-sidebar.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Start Bootstrap - Simple Sidebar (http://startbootstrap.com/) 3 | * Copyright 2013-2016 Start Bootstrap 4 | * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap/blob/gh-pages/LICENSE) 5 | */ 6 | 7 | body { 8 | overflow-x: hidden; 9 | } 10 | 11 | /* Toggle Styles */ 12 | 13 | #wrapper { 14 | padding-left: 0; 15 | -webkit-transition: all 0.5s ease; 16 | -moz-transition: all 0.5s ease; 17 | -o-transition: all 0.5s ease; 18 | transition: all 0.5s ease; 19 | } 20 | 21 | #wrapper.toggled { 22 | padding-left: 250px; 23 | } 24 | 25 | #sidebar-wrapper { 26 | z-index: 1000; 27 | position: fixed; 28 | left: 250px; 29 | width: 0; 30 | height: 100%; 31 | margin-left: -250px; 32 | overflow-y: auto; 33 | background: #000; 34 | -webkit-transition: all 0.5s ease; 35 | -moz-transition: all 0.5s ease; 36 | -o-transition: all 0.5s ease; 37 | transition: all 0.5s ease; 38 | } 39 | 40 | #wrapper.toggled #sidebar-wrapper { 41 | width: 250px; 42 | } 43 | 44 | #page-content-wrapper { 45 | width: 100%; 46 | position: absolute; 47 | padding: 15px; 48 | } 49 | 50 | #wrapper.toggled #page-content-wrapper { 51 | position: absolute; 52 | margin-right: -250px; 53 | } 54 | 55 | /* Sidebar Styles */ 56 | 57 | .sidebar-nav { 58 | position: absolute; 59 | top: 0; 60 | width: 250px; 61 | margin: 0; 62 | padding: 0; 63 | list-style: none; 64 | } 65 | 66 | .sidebar-nav li { 67 | text-indent: 20px; 68 | line-height: 40px; 69 | } 70 | 71 | .sidebar-nav li a { 72 | display: block; 73 | text-decoration: none; 74 | color: #999999; 75 | } 76 | 77 | .sidebar-nav li a:hover { 78 | text-decoration: none; 79 | color: #fff; 80 | background: rgba(255,255,255,0.2); 81 | } 82 | 83 | .sidebar-nav li a:active, 84 | .sidebar-nav li a:focus { 85 | text-decoration: none; 86 | } 87 | 88 | .sidebar-nav > .sidebar-brand { 89 | height: 65px; 90 | font-size: 18px; 91 | line-height: 60px; 92 | } 93 | 94 | .sidebar-nav > .sidebar-brand a { 95 | color: #999999; 96 | } 97 | 98 | .sidebar-nav > .sidebar-brand a:hover { 99 | color: #fff; 100 | background: none; 101 | } 102 | 103 | @media(min-width:768px) { 104 | #wrapper { 105 | padding-left: 0; 106 | } 107 | 108 | #wrapper.toggled { 109 | padding-left: 250px; 110 | } 111 | 112 | #sidebar-wrapper { 113 | width: 0; 114 | } 115 | 116 | #wrapper.toggled #sidebar-wrapper { 117 | width: 250px; 118 | } 119 | 120 | #page-content-wrapper { 121 | padding: 20px; 122 | position: relative; 123 | } 124 | 125 | #wrapper.toggled #page-content-wrapper { 126 | position: relative; 127 | margin-right: 0; 128 | } 129 | } -------------------------------------------------------------------------------- /src/main/webapp/resources/css/style.css: -------------------------------------------------------------------------------- 1 | label { 2 | display: block; 3 | color: #999; 4 | } 5 | .cf:before, 6 | .cf:after { 7 | content: ""; 8 | display: table; 9 | } 10 | 11 | .cf:after { 12 | clear: both; 13 | } 14 | .cf { 15 | *zoom: 1; 16 | } 17 | :focus { 18 | outline: 0; 19 | } 20 | .loginform { 21 | width: 410px; 22 | margin: 50px auto; 23 | padding: 25px; 24 | background-color: rgba(250,250,250,0.5); 25 | border-radius: 5px; 26 | box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.2), 27 | inset 0px 1px 0px 0px rgba(250, 250, 250, 0.5); 28 | border: 1px solid rgba(0, 0, 0, 0.3); 29 | } 30 | .loginform ul { 31 | padding: 0; 32 | margin: 0; 33 | } 34 | .loginform li { 35 | display: inline; 36 | float: left; 37 | } 38 | .loginform input:not([type=submit]) { 39 | padding: 5px; 40 | margin-right: 10px; 41 | border: 1px solid rgba(0, 0, 0, 0.3); 42 | border-radius: 3px; 43 | box-shadow: inset 0px 1px 3px 0px rgba(0, 0, 0, 0.1), 44 | 0px 1px 0px 0px rgba(250, 250, 250, 0.5) ; 45 | } 46 | .loginform input[type=submit] { 47 | border: 1px solid rgba(0, 0, 0, 0.3); 48 | background: #64c8ef; /* Old browsers */ 49 | background: -moz-linear-gradient(top, #64c8ef 0%, #00a2e2 100%); /* FF3.6+ */ 50 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#64c8ef), color-stop(100%,#00a2e2)); /* Chrome,Safari4+ */ 51 | background: -webkit-linear-gradient(top, #64c8ef 0%,#00a2e2 100%); /* Chrome10+,Safari5.1+ */ 52 | background: -o-linear-gradient(top, #64c8ef 0%,#00a2e2 100%); /* Opera 11.10+ */ 53 | background: -ms-linear-gradient(top, #64c8ef 0%,#00a2e2 100%); /* IE10+ */ 54 | background: linear-gradient(to bottom, #64c8ef 0%,#00a2e2 100%); /* W3C */ 55 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#64c8ef', endColorstr='#00a2e2',GradientType=0 ); /* IE6-9 */ 56 | color: #fff; 57 | padding: 5px 15px; 58 | margin-right: 0; 59 | margin-top: 15px; 60 | border-radius: 3px; 61 | text-shadow: 1px 1px 0px rgba(0, 0, 0, 0.3); 62 | } -------------------------------------------------------------------------------- /src/main/webapp/resources/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yrojha4ever/JavaStudSpringMVCWeb/570b1f3744967e3fa4da9279159c96631326655c/src/main/webapp/resources/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /src/main/webapp/resources/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yrojha4ever/JavaStudSpringMVCWeb/570b1f3744967e3fa4da9279159c96631326655c/src/main/webapp/resources/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /src/main/webapp/resources/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yrojha4ever/JavaStudSpringMVCWeb/570b1f3744967e3fa4da9279159c96631326655c/src/main/webapp/resources/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /src/main/webapp/resources/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yrojha4ever/JavaStudSpringMVCWeb/570b1f3744967e3fa4da9279159c96631326655c/src/main/webapp/resources/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /src/main/webapp/resources/img/monkey_testing.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yrojha4ever/JavaStudSpringMVCWeb/570b1f3744967e3fa4da9279159c96631326655c/src/main/webapp/resources/img/monkey_testing.jpg -------------------------------------------------------------------------------- /src/main/webapp/resources/js/app/currencyAngularApp.js: -------------------------------------------------------------------------------- 1 | angular.module('currencyApp',[]) 2 | .controller('CurrencyController', function($scope, $http){ 3 | $scope.rates = []; 4 | $http.get('http://api.fixer.io/latest?base=USD').then(function(result) { 5 | $scope.rates = result.data.rates; 6 | }); 7 | }); -------------------------------------------------------------------------------- /src/main/webapp/resources/js/github-calendar.min.js: -------------------------------------------------------------------------------- 1 | "use strict";var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e};!function(e){if("object"===("undefined"==typeof exports?"undefined":_typeof(exports))&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.GitHubCalendar=e()}}(function(){return function e(t,n,r){function a(u,s){if(!n[u]){if(!t[u]){var c="function"==typeof require&&require;if(!s&&c)return c(u,!0);if(o)return o(u,!0);var i=new Error("Cannot find module '"+u+"'");throw i.code="MODULE_NOT_FOUND",i}var l=n[u]={exports:{}};t[u][0].call(l.exports,function(e){var n=t[u][1][e];return a(n?n:e)},l,l.exports,e,t,n,r)}return n[u].exports}for(var o="function"==typeof require&&require,u=0;u@'+t+"",c.global_stats===!1&&(e.style.minHeight="175px"),c.proxy=c.proxy||function(e){return"https://urlreq.appspot.com/req?method=GET&url="+e};var i=function l(){return fetch(c.proxy("https://github.com/"+t)).then(function(e){return e.text()}).then(function(t){var i=document.createElement("div");i.innerHTML=t;var f=i.querySelector(".js-contribution-graph");if(f.querySelector(".float-left.text-gray").innerHTML=c.summary_text,f.querySelector("include-fragment"))setTimeout(l,500);else{if(c.global_stats!==!1){var d=n(r("svg",f).outerHTML),p=d.current_streak?o(d.current_streak_range[0],s)+" – "+o(d.current_streak_range[1],s):d.last_contributed?"Last contributed in "+o(d.last_contributed,s)+".":"Rock - Hard Place",g=d.longest_streak?o(d.longest_streak_range[0],s)+" – "+o(d.longest_streak_range[1],s):d.last_contributed?"Last contributed in "+o(d.last_contributed,s)+".":"Rock - Hard Place",y=r("
",{"class":"contrib-column contrib-column-first table-column",html:'Contributions in the last year\n '+d.last_year+' total\n '+o(a.subtract(new Date,1,"year"),u)+" – "+o(new Date,u)+""}),m=r("
",{"class":"contrib-column table-column",html:'Longest streak\n '+d.longest_streak+' days\n '+g+""}),b=r("
",{"class":"contrib-column table-column",html:'Current streak\n '+d.current_streak+' days\n '+p+""});f.appendChild(y),f.appendChild(m),f.appendChild(b)}e.innerHTML=f.innerHTML}})["catch"](function(e){return console.error(e)})};return i()}},{"add-subtract-date":2,elly:4,formatoid:6,"github-calendar-parser":8}],2:[function(e,t){function n(e){return function t(n,r,a){switch(r=e*r,a){case"years":case"year":n.setFullYear(n.getFullYear()+r);break;case"months":case"month":n.setMonth(n.getMonth()+r);break;case"weeks":case"week":return t(n,7*r,"days");case"days":case"day":n.setDate(n.getDate()+r);break;case"hours":case"hour":n.setHours(n.getHours()+r);break;case"minutes":case"minute":n.setMinutes(n.getMinutes()+r);break;case"seconds":case"second":n.setSeconds(n.getSeconds()+r);break;case"milliseconds":case"millisecond":n.setMilliseconds(n.getMilliseconds()+r);break;default:throw new Error("Invalid range: "+a)}return n}}t.exports={add:n(1),subtract:n(-1)}},{}],3:[function(e,t){t.exports=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],t.exports.abbr=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],t.exports["short"]=["Su","Mo","Tu","We","Th","Fr","Sa"]},{}],4:[function(e,t){function n(e,t){return"string"==typeof e?"<"===e.charAt(0)?(e=document.createElement(e.slice(1,-1)),r(t||{},function(t,n){switch(n){case"text":return void(e.textContent=t);case"html":return void(e.innerHTML=t)}e.setAttribute(n,t)}),e):(t=t||document,t.querySelector(e)):e}var r=e("iterate-object"),a=e("sliced");n.$$=function(e,t){return t=t||document,a(t.querySelectorAll(e))},t.exports=n},{"iterate-object":9,sliced:13}],5:[function(e,t){t.exports=function(e,t,n){t=t||2,n=n||"0",e=e.toString();var r=t-e.length;return(0>=r?"":n.repeat(r))+e}},{}],6:[function(e,t){var n=e("months"),r=e("days"),a=e("fillo"),o=e("parse-it").Parser,u=new o({YYYY:function(e){return e.getFullYear()},YY:function(e){return e.getFullYear()%100},MMMM:function(e){return n[e.getMonth()]},MMM:function(e){return n.abbr[e.getMonth()]},MM:function(e){return a(e.getMonth()+1)},M:function(e){return e.getMonth()+1},dddd:function(e){return r[e.getDay()]},ddd:function(e){return r.abbr[e.getDay()]},dd:function(e){return r["short"][e.getDay()]},d:function(e){return e.getDay()},DD:function(e){return a(e.getDate())},D:function(e){return e.getDate()},A:function(e){return e.getHours()>=12?"PM":"AM"},a:function(e){return e.getHours()>=12?"pm":"am"},hh:function(e){return a(e.getHours()%12||12)},h:function(e){return e.getHours()%12||12},HH:function(e){return a(e.getHours())},H:function(e){return e.getHours()},mm:function(e){return a(e.getMinutes())},m:function(e){return e.getMinutes()},ss:function(e){return a(e.getSeconds())},s:function(e){return e.getSeconds()}});t.exports=function(e,t){return u.run(t,[e])}},{days:3,fillo:5,months:10,"parse-it":11}],7:[function(e,t){t.exports=["#eee","#d6e685","#8cc665","#44a340","#1e6823"]},{}],8:[function(e,t){var n=e("github-calendar-legend");t.exports=function(e){var t={last_year:0,longest_streak:-1,longest_streak_range:[],current_streak:0,current_streak_range:[],weeks:[],days:[],last_contributed:null},r=[],a=function(){t.current_streak>t.longest_streak&&(t.longest_streak=t.current_streak,t.longest_streak_range[0]=t.current_streak_range[0],t.longest_streak_range[1]=t.current_streak_range[1])};return e.split("\n").slice(2).map(function(e){return e.trim()}).forEach(function(e){if(e.startsWith("t?Math.max(0,t+a):t||0;for(void 0!==n&&(a=0>n?n+a:n);a-->o;)r[a-o]=e[a];return r}},{}]},{},[1])(1)}); -------------------------------------------------------------------------------- /src/main/webapp/resources/js/npm.js: -------------------------------------------------------------------------------- 1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 2 | require('../../js/transition.js') 3 | require('../../js/alert.js') 4 | require('../../js/button.js') 5 | require('../../js/carousel.js') 6 | require('../../js/collapse.js') 7 | require('../../js/dropdown.js') 8 | require('../../js/modal.js') 9 | require('../../js/tooltip.js') 10 | require('../../js/popover.js') 11 | require('../../js/scrollspy.js') 12 | require('../../js/tab.js') 13 | require('../../js/affix.js') -------------------------------------------------------------------------------- /src/test/java/com/javastud/springmvcweb/designpatterns/factory/BankTypeTest.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.designpatterns.factory; 2 | 3 | import org.hamcrest.CoreMatchers; 4 | import org.junit.Assert; 5 | import org.junit.Test; 6 | 7 | public class BankTypeTest { 8 | 9 | @Test 10 | public void testBanks(){ 11 | //WARN: It will fail once any new bank are added in BankTypeEnum 12 | Assert.assertThat(BankType.values().length, CoreMatchers.is(2)); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/test/java/com/javastud/springmvcweb/designpatterns/singleton/CompanySingletonPatterenTest.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.designpatterns.singleton; 2 | 3 | import static org.junit.Assert.assertEquals; 4 | 5 | import org.junit.Assert; 6 | import org.junit.Test; 7 | 8 | public class CompanySingletonPatterenTest { 9 | 10 | @Test 11 | public void testCompanyEqual() { 12 | Company comp1 = Company.getInstance(); 13 | Company comp2 = Company.getInstance(); 14 | 15 | // check not null 16 | Assert.assertNotNull(comp1); 17 | 18 | // check equals 19 | assertEquals(comp1.getName(), "NGSOFT"); 20 | assertEquals(comp2.getName(), "NGSOFT"); 21 | 22 | Assert.assertSame(comp1, comp2); 23 | 24 | } 25 | 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/test/java/com/javastud/springmvcweb/service/JUnitTestCase.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.service; 2 | 3 | import org.junit.Assert; 4 | import org.junit.Test; 5 | 6 | public class JUnitTestCase { 7 | 8 | @Test(expected = ArrayIndexOutOfBoundsException.class) 9 | public void empty() { 10 | int[] a = new int[5]; 11 | a[10] = 200; 12 | 13 | Assert.fail("Expected an IndexOutOfBoundsException to be thrown"); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/test/java/com/javastud/springmvcweb/service/ServiceUtilsTest.java: -------------------------------------------------------------------------------- 1 | package com.javastud.springmvcweb.service; 2 | 3 | import static org.hamcrest.CoreMatchers.hasItems; 4 | import static org.hamcrest.CoreMatchers.is; 5 | 6 | import java.time.ZonedDateTime; 7 | 8 | import org.junit.After; 9 | import org.junit.AfterClass; 10 | import org.junit.Assert; 11 | import org.junit.Before; 12 | import org.junit.BeforeClass; 13 | import org.junit.FixMethodOrder; 14 | import org.junit.Ignore; 15 | import org.junit.Test; 16 | import org.junit.runners.MethodSorters; 17 | 18 | @FixMethodOrder(MethodSorters.DEFAULT) //NAME_ASCENDING 19 | public class ServiceUtilsTest { 20 | 21 | private ServiceUtils serviceUtils; 22 | 23 | @BeforeClass 24 | public static void init() { 25 | System.out.println("Before class..."); 26 | } 27 | 28 | @AfterClass 29 | public static void clean() { 30 | System.out.println("After class..."); 31 | } 32 | 33 | @Before 34 | public void beforeMethod() { 35 | serviceUtils = new ServiceUtils(); 36 | System.out.println("Before method..."); 37 | } 38 | 39 | @After 40 | public void afterMethod() { 41 | System.out.println("after method.."); 42 | } 43 | 44 | @Test 45 | public void testTimeZoneUtc() { 46 | ZonedDateTime currentDateTime = serviceUtils.getCurrentUtcDateTime(); 47 | Assert.assertNotNull((currentDateTime)); 48 | Assert.assertSame(currentDateTime.getZone().toString(), "Etc/UTC"); 49 | } 50 | 51 | // Test Fail: how to ignore 52 | @Ignore 53 | @Test 54 | public void testSortNotEmpty() { 55 | Integer zero = 0; // Expected is <0> but: was <5> 56 | Assert.assertThat("array not empty", serviceUtils.getCountries().size(), is(zero)); 57 | } 58 | 59 | @Test 60 | public void testSortedArrayItem() { 61 | Assert.assertThat(serviceUtils.getCountries(), hasItems("Nepal", "Bhutan")); 62 | } 63 | 64 | } 65 | -------------------------------------------------------------------------------- /src/test/resources/log4j.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | --------------------------------------------------------------------------------