├── .gitignore ├── README.md ├── bookstore-example-with-mvc-webflow ├── README.md ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── bookstore │ │ │ ├── config │ │ │ ├── InfrastructureContextConfiguration.java │ │ │ └── TestDataContextConfiguration.java │ │ │ ├── converter │ │ │ └── StringToEntityConverter.java │ │ │ ├── domain │ │ │ ├── Account.java │ │ │ ├── Address.java │ │ │ ├── Book.java │ │ │ ├── BookSearchCriteria.java │ │ │ ├── Cart.java │ │ │ ├── Category.java │ │ │ ├── Order.java │ │ │ ├── OrderDetail.java │ │ │ ├── Permission.java │ │ │ ├── Role.java │ │ │ └── support │ │ │ │ ├── AccountBuilder.java │ │ │ │ ├── BookBuilder.java │ │ │ │ ├── CategoryBuilder.java │ │ │ │ ├── EntityBuilder.java │ │ │ │ ├── InitialDataSetup.java │ │ │ │ └── OrderBuilder.java │ │ │ ├── formatter │ │ │ ├── DateFormat.java │ │ │ ├── DateFormatAnnotationFormatterFactory.java │ │ │ └── DateFormatter.java │ │ │ ├── repository │ │ │ ├── AccountRepository.java │ │ │ ├── BookRepository.java │ │ │ ├── CategoryRepository.java │ │ │ ├── JpaAccountRepository.java │ │ │ ├── JpaBookRepository.java │ │ │ ├── JpaCategoryRepository.java │ │ │ ├── JpaOrderRepository.java │ │ │ └── OrderRepository.java │ │ │ ├── service │ │ │ ├── AccountService.java │ │ │ ├── AccountServiceImpl.java │ │ │ ├── AuthenticationException.java │ │ │ ├── BookstoreService.java │ │ │ ├── BookstoreServiceImpl.java │ │ │ ├── CategoryService.java │ │ │ └── CategoryServiceImpl.java │ │ │ ├── validation │ │ │ ├── AccountValidator.java │ │ │ └── OrderValidator.java │ │ │ └── web │ │ │ ├── config │ │ │ ├── BookstoreWebApplicationInitializer.java │ │ │ ├── WebMvcContextConfiguration.java │ │ │ └── WebflowContextConfiguration.java │ │ │ ├── controller │ │ │ ├── AuthenticationController.java │ │ │ ├── BookDetailController.java │ │ │ ├── MainController.java │ │ │ ├── ManageBookController.java │ │ │ ├── ManageBookForm.java │ │ │ ├── ManageCategoryForm.java │ │ │ ├── OrderController.java │ │ │ └── OrderForm.java │ │ │ ├── interceptor │ │ │ └── CommonDataHandlerInterceptor.java │ │ │ └── security │ │ │ ├── BookstoreSecurityFlowExecutionListener.java │ │ │ ├── BookstoreUserDetails.java │ │ │ ├── BookstoreUserDetailsService.java │ │ │ └── SecurityContextSupport.java │ ├── resources │ │ ├── META-INF │ │ │ ├── MANIFEST.MF │ │ │ ├── persistence.xml │ │ │ └── web-resources │ │ │ │ ├── css │ │ │ │ └── style.css │ │ │ │ ├── images │ │ │ │ ├── Thumbs.db │ │ │ │ ├── about.gif │ │ │ │ ├── banner.gif │ │ │ │ ├── big_pic.jpg │ │ │ │ ├── blank.gif │ │ │ │ ├── books │ │ │ │ │ ├── 9780132350884 │ │ │ │ │ │ └── book_front_cover.png │ │ │ │ │ ├── 9780135974445 │ │ │ │ │ │ └── book_front_cover.png │ │ │ │ │ ├── 9780201485677 │ │ │ │ │ │ └── book_front_cover.png │ │ │ │ │ ├── 9780321356680 │ │ │ │ │ │ └── book_front_cover.png │ │ │ │ │ └── 9781430209737 │ │ │ │ │ │ └── book_front_cover.png │ │ │ │ ├── border.gif │ │ │ │ ├── box_bottom.gif │ │ │ │ ├── box_center.gif │ │ │ │ ├── box_top.gif │ │ │ │ ├── bullet1.gif │ │ │ │ ├── bullet2.gif │ │ │ │ ├── bullet3.gif │ │ │ │ ├── bullet4.gif │ │ │ │ ├── bullet5.gif │ │ │ │ ├── bullet6.gif │ │ │ │ ├── cart.gif │ │ │ │ ├── cart_thumb.gif │ │ │ │ ├── center_bg.gif │ │ │ │ ├── close.gif │ │ │ │ ├── closelabel.gif │ │ │ │ ├── color1.gif │ │ │ │ ├── color2.gif │ │ │ │ ├── color3.gif │ │ │ │ ├── contact_bt.gif │ │ │ │ ├── csscreme.gif │ │ │ │ ├── de.gif │ │ │ │ ├── footer_bg.gif │ │ │ │ ├── footer_logo.gif │ │ │ │ ├── fr.gif │ │ │ │ ├── gb.gif │ │ │ │ ├── header.jpg │ │ │ │ ├── left_menu_bullet.gif │ │ │ │ ├── loading.gif │ │ │ │ ├── logo.gif │ │ │ │ ├── new_icon.gif │ │ │ │ ├── new_prod_box.gif │ │ │ │ ├── next.gif │ │ │ │ ├── nextlabel.gif │ │ │ │ ├── nl.gif │ │ │ │ ├── order_now.gif │ │ │ │ ├── prev.gif │ │ │ │ ├── prevlabel.gif │ │ │ │ ├── prod1.gif │ │ │ │ ├── prod2.gif │ │ │ │ ├── promo_icon.gif │ │ │ │ ├── register_bt.gif │ │ │ │ ├── special_icon.gif │ │ │ │ ├── thumb1.gif │ │ │ │ ├── thumb2.gif │ │ │ │ ├── thumb3.gif │ │ │ │ └── zoom.gif │ │ │ │ └── jquery │ │ │ │ └── jquery-1.7.1.min.js │ │ ├── ehcache.xml │ │ ├── logback.xml │ │ ├── messages_en.properties │ │ ├── messages_nl.properties │ │ └── spring │ │ │ ├── spring-security.xml │ │ │ └── webflow-config.xml │ └── webapp │ │ ├── WEB-INF │ │ ├── templates │ │ │ ├── contentOnly.jsp │ │ │ ├── footer.jsp │ │ │ ├── header.jsp │ │ │ └── template.jsp │ │ ├── tiles │ │ │ └── tiles-configuration.xml │ │ └── view │ │ │ ├── public │ │ │ ├── authentication │ │ │ │ └── login.jsp │ │ │ ├── book │ │ │ │ └── detail.jsp │ │ │ ├── createOrders │ │ │ │ ├── createOrders-flow.xml │ │ │ │ ├── selectBooks.jsp │ │ │ │ ├── selectCategory.jsp │ │ │ │ ├── selectDeliveryOptions.jsp │ │ │ │ └── showSelectedBooks.jsp │ │ │ └── main.jsp │ │ │ └── secured │ │ │ ├── manageBooks │ │ │ └── manageBooks.jsp │ │ │ ├── ordersOverview │ │ │ ├── orderDetail.jsp │ │ │ ├── ordersOverview-flow.xml │ │ │ └── ordersOverview.jsp │ │ │ └── placeOrders │ │ │ └── placeOrders-flow.xml │ │ └── index.jsp │ └── test │ └── java │ └── com │ └── example │ └── bookstore │ └── web │ └── controller │ └── CreateOrderTest.java ├── bookstore-example-with-mvc ├── README.md ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── bookstore │ │ │ ├── config │ │ │ ├── InfrastructureContextConfiguration.java │ │ │ └── TestDataContextConfiguration.java │ │ │ ├── converter │ │ │ └── StringToEntityConverter.java │ │ │ ├── dao │ │ │ └── DummyDao.java │ │ │ ├── domain │ │ │ ├── Account.java │ │ │ ├── Address.java │ │ │ ├── Book.java │ │ │ ├── BookSearchCriteria.java │ │ │ ├── Cart.java │ │ │ ├── Category.java │ │ │ ├── Order.java │ │ │ ├── OrderDetail.java │ │ │ ├── Permission.java │ │ │ ├── Role.java │ │ │ └── support │ │ │ │ ├── AccountBuilder.java │ │ │ │ ├── BookBuilder.java │ │ │ │ ├── CategoryBuilder.java │ │ │ │ ├── EntityBuilder.java │ │ │ │ ├── InitialDataSetup.java │ │ │ │ └── OrderBuilder.java │ │ │ ├── formatter │ │ │ ├── DateFormat.java │ │ │ ├── DateFormatAnnotationFormatterFactory.java │ │ │ └── DateFormatter.java │ │ │ ├── repository │ │ │ ├── AccountRepository.java │ │ │ ├── BookRepository.java │ │ │ ├── CategoryRepository.java │ │ │ ├── JpaAccountRepository.java │ │ │ ├── JpaBookRepository.java │ │ │ ├── JpaCategoryRepository.java │ │ │ ├── JpaOrderRepository.java │ │ │ └── OrderRepository.java │ │ │ ├── service │ │ │ ├── AccountService.java │ │ │ ├── AccountServiceImpl.java │ │ │ ├── AuthenticationException.java │ │ │ ├── BookstoreService.java │ │ │ ├── BookstoreServiceImpl.java │ │ │ ├── CategoryService.java │ │ │ └── CategoryServiceImpl.java │ │ │ ├── validation │ │ │ ├── AccountValidator.java │ │ │ └── OrderValidator.java │ │ │ └── web │ │ │ ├── BookstoreWebApplicationInitializer.java │ │ │ ├── config │ │ │ ├── ViewConfiguration.java │ │ │ └── WebMvcContextConfiguration.java │ │ │ ├── controller │ │ │ ├── AccountController.java │ │ │ ├── BookDetailController.java │ │ │ ├── BookSearchController.java │ │ │ ├── CartController.java │ │ │ ├── CheckoutController.java │ │ │ ├── LoginController.java │ │ │ ├── LogoutController.java │ │ │ ├── OrderController.java │ │ │ └── RegistrationController.java │ │ │ ├── interceptor │ │ │ ├── CommonDataInterceptor.java │ │ │ └── SecurityHandlerInterceptor.java │ │ │ ├── method │ │ │ └── support │ │ │ │ ├── SessionAttribute.java │ │ │ │ └── SessionAttributeProcessor.java │ │ │ ├── servlet │ │ │ └── SimpleServletHandlerAdapter.java │ │ │ └── view │ │ │ ├── OrderExcelView.java │ │ │ ├── OrderPdfView.java │ │ │ └── SimpleConfigurableViewResolver.java │ ├── resources │ │ ├── META-INF │ │ │ ├── MANIFEST.MF │ │ │ ├── persistence.xml │ │ │ └── web-resources │ │ │ │ ├── css │ │ │ │ ├── Kickstrap │ │ │ │ │ ├── apps │ │ │ │ │ │ ├── animatecss │ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ │ ├── animate.css │ │ │ │ │ │ │ └── config.ks │ │ │ │ │ │ ├── bootstrap │ │ │ │ │ │ │ ├── affix │ │ │ │ │ │ │ │ └── config.ks │ │ │ │ │ │ │ ├── alert │ │ │ │ │ │ │ │ ├── advisory.js │ │ │ │ │ │ │ │ └── config.ks │ │ │ │ │ │ │ ├── bootstrap.js │ │ │ │ │ │ │ ├── button │ │ │ │ │ │ │ │ └── config.ks │ │ │ │ │ │ │ ├── carousel │ │ │ │ │ │ │ │ └── config.ks │ │ │ │ │ │ │ ├── collapse │ │ │ │ │ │ │ │ └── config.ks │ │ │ │ │ │ │ ├── config.ks │ │ │ │ │ │ │ ├── dropdown │ │ │ │ │ │ │ │ └── config.ks │ │ │ │ │ │ │ ├── modal │ │ │ │ │ │ │ │ └── config.ks │ │ │ │ │ │ │ ├── popover │ │ │ │ │ │ │ │ └── config.ks │ │ │ │ │ │ │ ├── scrollspy │ │ │ │ │ │ │ │ └── config.ks │ │ │ │ │ │ │ ├── tab │ │ │ │ │ │ │ │ └── config.ks │ │ │ │ │ │ │ ├── tooltip │ │ │ │ │ │ │ │ └── config.ks │ │ │ │ │ │ │ ├── transition │ │ │ │ │ │ │ │ └── config.ks │ │ │ │ │ │ │ └── typeahead │ │ │ │ │ │ │ │ └── config.ks │ │ │ │ │ │ ├── chosen │ │ │ │ │ │ │ ├── chosen-init.js │ │ │ │ │ │ │ ├── chosen-sprite.png │ │ │ │ │ │ │ ├── chosen.css │ │ │ │ │ │ │ ├── chosen.jquery.js │ │ │ │ │ │ │ └── config.ks │ │ │ │ │ │ ├── colorschemer │ │ │ │ │ │ │ ├── arrow.gif │ │ │ │ │ │ │ ├── config.ks │ │ │ │ │ │ │ ├── consoletools.js │ │ │ │ │ │ │ ├── cross.gif │ │ │ │ │ │ │ ├── demo.html │ │ │ │ │ │ │ ├── hs.png │ │ │ │ │ │ │ ├── hv.png │ │ │ │ │ │ │ ├── jscolor.js │ │ │ │ │ │ │ └── newbox.js │ │ │ │ │ │ ├── firebuglite │ │ │ │ │ │ │ ├── config.ks │ │ │ │ │ │ │ └── firebuglite.js │ │ │ │ │ │ ├── jQueryLint │ │ │ │ │ │ │ ├── config.ks │ │ │ │ │ │ │ └── jquery.lint.min.js │ │ │ │ │ │ ├── knockout │ │ │ │ │ │ │ ├── config.ks │ │ │ │ │ │ │ ├── knockout.min.js │ │ │ │ │ │ │ └── view.model.js │ │ │ │ │ │ ├── pinesnotify │ │ │ │ │ │ │ ├── config.ks │ │ │ │ │ │ │ ├── jquery.pnotify.default.css │ │ │ │ │ │ │ ├── jquery.pnotify.js │ │ │ │ │ │ │ ├── jquery.pnotify.min.js │ │ │ │ │ │ │ └── use for pines style icons │ │ │ │ │ │ │ │ └── jquery.pnotify.default.icons.css │ │ │ │ │ │ ├── universal │ │ │ │ │ │ │ ├── config.ks │ │ │ │ │ │ │ ├── jQueryUI │ │ │ │ │ │ │ │ └── jquery-ui-1.8.min.js │ │ │ │ │ │ │ └── what-is-this.txt │ │ │ │ │ │ └── updater │ │ │ │ │ │ │ ├── config.ks │ │ │ │ │ │ │ └── init.js │ │ │ │ │ ├── bootstrap │ │ │ │ │ │ ├── LICENSE │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── img │ │ │ │ │ │ │ ├── glyphicons-halflings-white.png │ │ │ │ │ │ │ └── glyphicons-halflings.png │ │ │ │ │ │ ├── js │ │ │ │ │ │ │ ├── .jshintrc │ │ │ │ │ │ │ ├── bootstrap-affix.js │ │ │ │ │ │ │ ├── bootstrap-alert.js │ │ │ │ │ │ │ ├── bootstrap-button.js │ │ │ │ │ │ │ ├── bootstrap-carousel.js │ │ │ │ │ │ │ ├── bootstrap-collapse.js │ │ │ │ │ │ │ ├── bootstrap-dropdown.js │ │ │ │ │ │ │ ├── bootstrap-modal.js │ │ │ │ │ │ │ ├── bootstrap-popover.js │ │ │ │ │ │ │ ├── bootstrap-scrollspy.js │ │ │ │ │ │ │ ├── bootstrap-tab.js │ │ │ │ │ │ │ ├── bootstrap-tooltip.js │ │ │ │ │ │ │ ├── bootstrap-transition.js │ │ │ │ │ │ │ └── bootstrap-typeahead.js │ │ │ │ │ │ └── less │ │ │ │ │ │ │ ├── accordion.less │ │ │ │ │ │ │ ├── alerts.less │ │ │ │ │ │ │ ├── bootstrap.less │ │ │ │ │ │ │ ├── breadcrumbs.less │ │ │ │ │ │ │ ├── button-groups.less │ │ │ │ │ │ │ ├── buttons.less │ │ │ │ │ │ │ ├── carousel.less │ │ │ │ │ │ │ ├── close.less │ │ │ │ │ │ │ ├── code.less │ │ │ │ │ │ │ ├── component-animations.less │ │ │ │ │ │ │ ├── dropdowns.less │ │ │ │ │ │ │ ├── forms.less │ │ │ │ │ │ │ ├── grid.less │ │ │ │ │ │ │ ├── hero-unit.less │ │ │ │ │ │ │ ├── labels-badges.less │ │ │ │ │ │ │ ├── layouts.less │ │ │ │ │ │ │ ├── mixins.less │ │ │ │ │ │ │ ├── modals.less │ │ │ │ │ │ │ ├── navbar.less │ │ │ │ │ │ │ ├── navs.less │ │ │ │ │ │ │ ├── pager.less │ │ │ │ │ │ │ ├── pagination.less │ │ │ │ │ │ │ ├── popovers.less │ │ │ │ │ │ │ ├── progress-bars.less │ │ │ │ │ │ │ ├── reset.less │ │ │ │ │ │ │ ├── responsive-1200px-min.less │ │ │ │ │ │ │ ├── responsive-767px-max.less │ │ │ │ │ │ │ ├── responsive-768px-979px.less │ │ │ │ │ │ │ ├── responsive-navbar.less │ │ │ │ │ │ │ ├── responsive-utilities.less │ │ │ │ │ │ │ ├── responsive.less │ │ │ │ │ │ │ ├── scaffolding.less │ │ │ │ │ │ │ ├── sprites.less │ │ │ │ │ │ │ ├── tables.less │ │ │ │ │ │ │ ├── thumbnails.less │ │ │ │ │ │ │ ├── tooltip.less │ │ │ │ │ │ │ ├── type.less │ │ │ │ │ │ │ ├── utilities.less │ │ │ │ │ │ │ ├── variables.less │ │ │ │ │ │ │ └── wells.less │ │ │ │ │ ├── css │ │ │ │ │ │ └── readme.txt │ │ │ │ │ ├── extras │ │ │ │ │ │ ├── caching.less │ │ │ │ │ │ ├── console.less │ │ │ │ │ │ ├── fontawesome │ │ │ │ │ │ │ ├── FontAwesome-Vectors.pdf │ │ │ │ │ │ │ ├── FontAwesome.ttf │ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ │ ├── docs │ │ │ │ │ │ │ │ ├── assets │ │ │ │ │ │ │ │ │ ├── css │ │ │ │ │ │ │ │ │ │ ├── font-awesome-ie7.css │ │ │ │ │ │ │ │ │ │ ├── font-awesome.css │ │ │ │ │ │ │ │ │ │ ├── prettify.css │ │ │ │ │ │ │ │ │ │ └── site.css │ │ │ │ │ │ │ │ │ ├── font │ │ │ │ │ │ │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ │ │ │ │ │ │ ├── fontawesome-webfont.svg │ │ │ │ │ │ │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ │ │ │ │ │ │ ├── fontawesome-webfont.woff │ │ │ │ │ │ │ │ │ │ ├── museo_slab_300-webfont.eot │ │ │ │ │ │ │ │ │ │ ├── museo_slab_300-webfont.ttf │ │ │ │ │ │ │ │ │ │ ├── museo_slab_500-webfont.eot │ │ │ │ │ │ │ │ │ │ ├── museo_slab_500-webfont.ttf │ │ │ │ │ │ │ │ │ │ ├── proximanova-webfont.eot │ │ │ │ │ │ │ │ │ │ └── proximanova-webfont.ttf │ │ │ │ │ │ │ │ │ ├── ico │ │ │ │ │ │ │ │ │ │ └── favicon.ico │ │ │ │ │ │ │ │ │ ├── js │ │ │ │ │ │ │ │ │ │ ├── backbone.min.js │ │ │ │ │ │ │ │ │ │ ├── index │ │ │ │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ │ │ │ ├── jquery-1.7.1.min.js │ │ │ │ │ │ │ │ │ │ ├── prettify.min.js │ │ │ │ │ │ │ │ │ │ ├── tw-bs-201 │ │ │ │ │ │ │ │ │ │ │ ├── bootstrap-alert.js │ │ │ │ │ │ │ │ │ │ │ ├── bootstrap-button.js │ │ │ │ │ │ │ │ │ │ │ ├── bootstrap-carousel.js │ │ │ │ │ │ │ │ │ │ │ ├── bootstrap-collapse.js │ │ │ │ │ │ │ │ │ │ │ ├── bootstrap-dropdown.js │ │ │ │ │ │ │ │ │ │ │ ├── bootstrap-modal.js │ │ │ │ │ │ │ │ │ │ │ ├── bootstrap-popover.js │ │ │ │ │ │ │ │ │ │ │ ├── bootstrap-scrollspy.js │ │ │ │ │ │ │ │ │ │ │ ├── bootstrap-tab.js │ │ │ │ │ │ │ │ │ │ │ ├── bootstrap-tooltip.js │ │ │ │ │ │ │ │ │ │ │ ├── bootstrap-transition.js │ │ │ │ │ │ │ │ │ │ │ └── bootstrap-typeahead.js │ │ │ │ │ │ │ │ │ │ └── underscore.min.js │ │ │ │ │ │ │ │ │ └── less │ │ │ │ │ │ │ │ │ │ ├── font-awesome-ie7.less │ │ │ │ │ │ │ │ │ │ ├── font-awesome.less │ │ │ │ │ │ │ │ │ │ ├── font-site.less │ │ │ │ │ │ │ │ │ │ ├── mixins.less │ │ │ │ │ │ │ │ │ │ ├── site.less │ │ │ │ │ │ │ │ │ │ ├── twbs-203 │ │ │ │ │ │ │ │ │ │ ├── accordion.less │ │ │ │ │ │ │ │ │ │ ├── alerts.less │ │ │ │ │ │ │ │ │ │ ├── bootstrap.less │ │ │ │ │ │ │ │ │ │ ├── breadcrumbs.less │ │ │ │ │ │ │ │ │ │ ├── button-groups.less │ │ │ │ │ │ │ │ │ │ ├── buttons.less │ │ │ │ │ │ │ │ │ │ ├── carousel.less │ │ │ │ │ │ │ │ │ │ ├── close.less │ │ │ │ │ │ │ │ │ │ ├── code.less │ │ │ │ │ │ │ │ │ │ ├── component-animations.less │ │ │ │ │ │ │ │ │ │ ├── dropdowns.less │ │ │ │ │ │ │ │ │ │ ├── forms.less │ │ │ │ │ │ │ │ │ │ ├── grid.less │ │ │ │ │ │ │ │ │ │ ├── hero-unit.less │ │ │ │ │ │ │ │ │ │ ├── labels-badges.less │ │ │ │ │ │ │ │ │ │ ├── layouts.less │ │ │ │ │ │ │ │ │ │ ├── mixins.less │ │ │ │ │ │ │ │ │ │ ├── modals.less │ │ │ │ │ │ │ │ │ │ ├── navbar.less │ │ │ │ │ │ │ │ │ │ ├── navs.less │ │ │ │ │ │ │ │ │ │ ├── pager.less │ │ │ │ │ │ │ │ │ │ ├── pagination.less │ │ │ │ │ │ │ │ │ │ ├── popovers.less │ │ │ │ │ │ │ │ │ │ ├── progress-bars.less │ │ │ │ │ │ │ │ │ │ ├── reset.less │ │ │ │ │ │ │ │ │ │ ├── responsive-1200px-min.less │ │ │ │ │ │ │ │ │ │ ├── responsive-767px-max.less │ │ │ │ │ │ │ │ │ │ ├── responsive-768px-979px.less │ │ │ │ │ │ │ │ │ │ ├── responsive-navbar.less │ │ │ │ │ │ │ │ │ │ ├── responsive-utilities.less │ │ │ │ │ │ │ │ │ │ ├── responsive.less │ │ │ │ │ │ │ │ │ │ ├── scaffolding.less │ │ │ │ │ │ │ │ │ │ ├── sprites.less │ │ │ │ │ │ │ │ │ │ ├── tables.less │ │ │ │ │ │ │ │ │ │ ├── thumbnails.less │ │ │ │ │ │ │ │ │ │ ├── tooltip.less │ │ │ │ │ │ │ │ │ │ ├── type.less │ │ │ │ │ │ │ │ │ │ ├── utilities.less │ │ │ │ │ │ │ │ │ │ ├── variables.less │ │ │ │ │ │ │ │ │ │ └── wells.less │ │ │ │ │ │ │ │ │ │ └── variables.less │ │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── font │ │ │ │ │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ │ │ │ │ ├── fontawesome-webfont.svg │ │ │ │ │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ │ │ │ │ └── fontawesome-webfont.woff │ │ │ │ │ │ │ └── less │ │ │ │ │ │ │ │ ├── font-awesome-ie7.less │ │ │ │ │ │ │ │ └── font-awesome.less │ │ │ │ │ │ ├── foot.less │ │ │ │ │ │ ├── head.less │ │ │ │ │ │ ├── horizontal-lists.less │ │ │ │ │ │ ├── icons.less │ │ │ │ │ │ ├── ks-preview.less │ │ │ │ │ │ ├── olcg.less │ │ │ │ │ │ ├── pretty-print.less │ │ │ │ │ │ ├── progress.less │ │ │ │ │ │ ├── retina.less │ │ │ │ │ │ ├── root goodies │ │ │ │ │ │ │ ├── .htaccess │ │ │ │ │ │ │ ├── 404.html │ │ │ │ │ │ │ ├── apple-touch-icon-114x114-precomposed.png │ │ │ │ │ │ │ ├── apple-touch-icon-57x57-precomposed.png │ │ │ │ │ │ │ ├── apple-touch-icon-72x72-precomposed.png │ │ │ │ │ │ │ ├── apple-touch-icon-precomposed.png │ │ │ │ │ │ │ ├── apple-touch-icon.png │ │ │ │ │ │ │ ├── crossdomain.xml │ │ │ │ │ │ │ ├── favicon.ico │ │ │ │ │ │ │ ├── robots.txt │ │ │ │ │ │ │ └── whatisthis.txt │ │ │ │ │ │ ├── sprites.less │ │ │ │ │ │ └── sticky-footer.less │ │ │ │ │ ├── js │ │ │ │ │ │ ├── jquery-1.7.1.min.js │ │ │ │ │ │ ├── kickstrap.js │ │ │ │ │ │ ├── kickstrap.min.js │ │ │ │ │ │ ├── less-1.3.0.js │ │ │ │ │ │ └── less-1.3.0.min.js │ │ │ │ │ └── themes │ │ │ │ │ │ ├── amelia │ │ │ │ │ │ ├── bootswatch.less │ │ │ │ │ │ └── variables.less │ │ │ │ │ │ ├── cerulean │ │ │ │ │ │ ├── bootswatch.less │ │ │ │ │ │ └── variables.less │ │ │ │ │ │ ├── cyborg │ │ │ │ │ │ ├── bootswatch.less │ │ │ │ │ │ └── variables.less │ │ │ │ │ │ ├── journal │ │ │ │ │ │ ├── bootswatch.less │ │ │ │ │ │ └── variables.less │ │ │ │ │ │ ├── readable │ │ │ │ │ │ ├── bootswatch.less │ │ │ │ │ │ └── variables.less │ │ │ │ │ │ ├── simplex │ │ │ │ │ │ ├── bootswatch.less │ │ │ │ │ │ └── variables.less │ │ │ │ │ │ ├── slate │ │ │ │ │ │ ├── bootswatch.less │ │ │ │ │ │ └── variables.less │ │ │ │ │ │ ├── spacelab │ │ │ │ │ │ ├── bootswatch.less │ │ │ │ │ │ └── variables.less │ │ │ │ │ │ ├── spruce │ │ │ │ │ │ ├── bootswatch.less │ │ │ │ │ │ └── variables.less │ │ │ │ │ │ ├── superhero │ │ │ │ │ │ ├── bootswatch.less │ │ │ │ │ │ └── variables.less │ │ │ │ │ │ └── united │ │ │ │ │ │ ├── bootswatch.less │ │ │ │ │ │ └── variables.less │ │ │ │ ├── kickstrap.less │ │ │ │ ├── style.css │ │ │ │ └── theme.less │ │ │ │ ├── images │ │ │ │ ├── Thumbs.db │ │ │ │ ├── about.gif │ │ │ │ ├── banner.gif │ │ │ │ ├── big_pic.jpg │ │ │ │ ├── blank.gif │ │ │ │ ├── books │ │ │ │ │ ├── 9780132350884 │ │ │ │ │ │ └── book_front_cover.png │ │ │ │ │ ├── 9780135974445 │ │ │ │ │ │ └── book_front_cover.png │ │ │ │ │ ├── 9780201485677 │ │ │ │ │ │ └── book_front_cover.png │ │ │ │ │ ├── 9780321356680 │ │ │ │ │ │ └── book_front_cover.png │ │ │ │ │ └── 9781430209737 │ │ │ │ │ │ └── book_front_cover.png │ │ │ │ ├── border.gif │ │ │ │ ├── box_bottom.gif │ │ │ │ ├── box_center.gif │ │ │ │ ├── box_top.gif │ │ │ │ ├── bullet1.gif │ │ │ │ ├── bullet2.gif │ │ │ │ ├── bullet3.gif │ │ │ │ ├── bullet4.gif │ │ │ │ ├── bullet5.gif │ │ │ │ ├── bullet6.gif │ │ │ │ ├── cart.gif │ │ │ │ ├── cart_thumb.gif │ │ │ │ ├── center_bg.gif │ │ │ │ ├── close.gif │ │ │ │ ├── closelabel.gif │ │ │ │ ├── color1.gif │ │ │ │ ├── color2.gif │ │ │ │ ├── color3.gif │ │ │ │ ├── contact_bt.gif │ │ │ │ ├── csscreme.gif │ │ │ │ ├── de.gif │ │ │ │ ├── footer_bg.gif │ │ │ │ ├── footer_logo.gif │ │ │ │ ├── fr.gif │ │ │ │ ├── gb.gif │ │ │ │ ├── header.jpg │ │ │ │ ├── left_menu_bullet.gif │ │ │ │ ├── loading.gif │ │ │ │ ├── logo.gif │ │ │ │ ├── new_icon.gif │ │ │ │ ├── new_prod_box.gif │ │ │ │ ├── next.gif │ │ │ │ ├── nextlabel.gif │ │ │ │ ├── nl.gif │ │ │ │ ├── order_now.gif │ │ │ │ ├── prev.gif │ │ │ │ ├── prevlabel.gif │ │ │ │ ├── prod1.gif │ │ │ │ ├── prod2.gif │ │ │ │ ├── promo_icon.gif │ │ │ │ ├── register_bt.gif │ │ │ │ ├── special_icon.gif │ │ │ │ ├── thumb1.gif │ │ │ │ ├── thumb2.gif │ │ │ │ ├── thumb3.gif │ │ │ │ └── zoom.gif │ │ │ │ └── jquery │ │ │ │ └── jquery-1.7.1.min.js │ │ ├── ehcache.xml │ │ ├── logback.xml │ │ ├── messages_en.properties │ │ ├── messages_nl.properties │ │ └── views.properties │ └── webapp │ │ ├── WEB-INF │ │ ├── freemarker │ │ │ └── book │ │ │ │ └── search.ftl │ │ ├── templates │ │ │ ├── footer.jsp │ │ │ ├── header.jsp │ │ │ └── template.jsp │ │ ├── tiles.xml │ │ ├── velocity │ │ │ └── book │ │ │ │ └── search.vm │ │ ├── views.properties │ │ ├── views.xml │ │ ├── views │ │ │ ├── book │ │ │ │ ├── detail.jsp │ │ │ │ └── search.jsp │ │ │ ├── cart │ │ │ │ └── checkout.jsp │ │ │ ├── customer │ │ │ │ ├── account.jsp │ │ │ │ └── register.jsp │ │ │ ├── index.jsp │ │ │ └── login.jsp │ │ └── xslt │ │ │ └── index.xslt │ │ └── index.jsp │ └── test │ ├── java │ └── com │ │ └── example │ │ └── bookstore │ │ ├── basic │ │ └── BasicUnitTest.java │ │ ├── repository │ │ └── JpaBookRepositoryTest.java │ │ ├── service │ │ └── AccountServiceTest.java │ │ └── web │ │ ├── controller │ │ ├── LoginControllerTest.java │ │ └── SpringMvcTestLoginControllerTest.java │ │ └── frontend │ │ └── SeleniumLoginFrontendTest.java │ └── resources │ └── log4j.xml ├── bookstore-spring-boot ├── README.md ├── pom.xml ├── sqlscripts │ └── schema.sql └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── hcl │ │ │ └── test │ │ │ ├── UiApplication.java │ │ │ └── repository │ │ │ ├── BookRepository.java │ │ │ ├── CategoryRepository.java │ │ │ ├── OrderDetailsRepository.java │ │ │ └── OrdersRepository.java │ └── resources │ │ ├── META-INF │ │ └── reverse-persistence.xml │ │ ├── application.properties │ │ └── static │ │ ├── app.js │ │ ├── assets │ │ ├── css │ │ │ ├── json-formatter.min.css │ │ │ ├── main.css │ │ │ └── ng-grid.css │ │ └── img │ │ │ ├── ajax-loader.gif │ │ │ ├── file.png │ │ │ ├── folder-closed.png │ │ │ └── folder.png │ │ ├── controllers │ │ ├── booklist.controllers.js │ │ ├── checkout.controllers.js │ │ ├── mainCtrl.controllers.js │ │ └── masterData.controllers.js │ │ ├── demo │ │ ├── app.js │ │ ├── dynamic-forms.js │ │ ├── form-template.json │ │ ├── form-template1.json │ │ └── index.html │ │ ├── directives │ │ ├── commitableValue.directive.js │ │ ├── headerbar.directive.js │ │ ├── jsonview.directive.js │ │ ├── listentry.directive.js │ │ ├── planNavi.directive.js │ │ └── showErrors.directive.js │ │ ├── index.html │ │ ├── libraries │ │ ├── angular │ │ │ └── js │ │ │ │ ├── angular-animate.js │ │ │ │ ├── angular-animate.min.js │ │ │ │ ├── angular-animate.min.js.map │ │ │ │ ├── angular-cookies.js │ │ │ │ ├── angular-cookies.min.js │ │ │ │ ├── angular-cookies.min.js.map │ │ │ │ ├── angular-csp.css │ │ │ │ ├── angular-loader.js │ │ │ │ ├── angular-loader.min.js │ │ │ │ ├── angular-loader.min.js.map │ │ │ │ ├── angular-mocks.js │ │ │ │ ├── angular-resource.js │ │ │ │ ├── angular-resource.min.js │ │ │ │ ├── angular-resource.min.js.map │ │ │ │ ├── angular-route.js │ │ │ │ ├── angular-route.min.js │ │ │ │ ├── angular-route.min.js.map │ │ │ │ ├── angular-sanitize.js │ │ │ │ ├── angular-sanitize.min.js │ │ │ │ ├── angular-sanitize.min.js.map │ │ │ │ ├── angular-scenario.js │ │ │ │ ├── angular-touch.js │ │ │ │ ├── angular-touch.min.js │ │ │ │ ├── angular-touch.min.js.map │ │ │ │ ├── angular-ui-router.min.js │ │ │ │ ├── angular.js │ │ │ │ ├── angular.min.js │ │ │ │ ├── angular.min.js.map │ │ │ │ ├── angular.treeview.js │ │ │ │ ├── dynamic-forms.js │ │ │ │ ├── ng-grid.debug.js │ │ │ │ ├── ui-bootstrap-tpls-0.11.0.js │ │ │ │ ├── ui-bootstrap-tpls-0.11.0.min.js │ │ │ │ └── ui-grid.min.js │ │ ├── bootstrap │ │ │ ├── css │ │ │ │ ├── bootstrap-theme.css │ │ │ │ ├── bootstrap-theme.css.map │ │ │ │ ├── bootstrap-theme.min.css │ │ │ │ ├── bootstrap.css │ │ │ │ ├── bootstrap.css.map │ │ │ │ └── bootstrap.min.css │ │ │ ├── fonts │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ └── glyphicons-halflings-regular.woff │ │ │ └── js │ │ │ │ ├── bootstrap.js │ │ │ │ └── bootstrap.min.js │ │ ├── jquery │ │ │ └── js │ │ │ │ ├── jquery-2.1.1.js │ │ │ │ ├── jquery-2.1.1.min.js │ │ │ │ └── jquery-2.1.1.min.map │ │ └── ngtags │ │ │ ├── ng-tags-input.js │ │ │ ├── ng-tags-input.min.css │ │ │ └── ng-tags-input.min.js │ │ ├── services │ │ ├── masterDataApi.service.js │ │ └── saveFormData.service.js │ │ └── views │ │ ├── generic │ │ └── error.html │ │ ├── headerbar │ │ └── headerbar.html │ │ ├── home │ │ └── home.html │ │ ├── listentry │ │ └── listentry.html │ │ └── navigation │ │ ├── bookecom-checkout.html │ │ ├── bookecom-listBooks.html │ │ └── bookecom.html │ └── test │ ├── java │ └── org │ │ └── hcl │ │ └── test │ │ ├── UiApplicationTests.java │ │ └── repository │ │ ├── CartRepositoryTest.java │ │ └── CategoryRepositoryTest.java │ └── resources │ ├── application.properties │ └── datasets │ ├── cart.xml │ └── it-categories.xml └── spring_boot_form_builder ├── architecture_diagram.png ├── formbuilder_h2_services ├── .gitignore ├── pom.xml ├── src │ └── main │ │ ├── java │ │ └── com │ │ │ └── formbuilder │ │ │ ├── FormInformationRepository.java │ │ │ ├── FormInformationServiceImpl.java │ │ │ ├── UiFormDao.java │ │ │ ├── UiFormDaoImpl.java │ │ │ ├── UiRuleRepository.java │ │ │ ├── UiRuleValidatorServiceImpl.java │ │ │ ├── Utils.java │ │ │ ├── jdbcstream │ │ │ └── JdbcStream.java │ │ │ └── sqlemitwithjson │ │ │ ├── FormSqlEmitter.java │ │ │ ├── Main.java │ │ │ ├── RuleSqlEmitter.java │ │ │ ├── SqlEmitter.java │ │ │ └── Util.java │ │ └── resources │ │ ├── application.properties │ │ ├── data.sql │ │ └── schema.sql └── table-details.json ├── formbuilder_lib ├── .gitignore ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── formbuilder │ ├── FormInformationService.java │ ├── UiRuleValidatorService.java │ ├── dto │ ├── ColumnDTO.java │ ├── FormInformation.java │ ├── ListInformation.java │ ├── NameValue.java │ ├── Node.java │ ├── QuickFormInformation.java │ ├── RuleValidationOutcome.java │ ├── TableDetail.java │ ├── UiForm.java │ ├── UiFormLink.java │ └── UiRule.java │ └── rule │ ├── AssertIfAllPresentRule.java │ ├── AssertIfOneIsPresentRule.java │ ├── CheckIfOneOfTheseIsPresentValueIsPresentRule.java │ ├── Evaluator.java │ └── Rule.java ├── formbuilder_mongo_services ├── .gitignore ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── formbuilder │ │ │ ├── DynamicUiService.java │ │ │ ├── FormInformationRepository.java │ │ │ ├── FormInformationServiceImpl.java │ │ │ ├── UiRuleRepository.java │ │ │ └── UiRuleValidatorServiceImpl.java │ └── resources │ │ └── application.properties │ └── test │ └── resources │ └── application.properties ├── formbuilder_parent ├── .gitignore ├── README.md ├── edit.png ├── pom.xml └── read.png └── formbuilder_ui ├── .gitignore ├── README.md ├── pom.xml └── src ├── main ├── java │ └── com │ │ └── formbuilder │ │ ├── Application.java │ │ └── DynamicController.java ├── resources │ └── application.properties └── webapp │ ├── app.js │ ├── assets │ ├── css │ │ ├── json-formatter.min.css │ │ ├── main.css │ │ └── ng-grid.css │ └── img │ │ ├── Dynforms-Logo.png │ │ ├── ajax-loader.gif │ │ ├── file.png │ │ ├── folder-closed.png │ │ └── folder.png │ ├── controllers │ ├── designofformscreate.controllers.js │ ├── designofformslist.controllers.js │ ├── formdatalist.controllers.js │ ├── formdatapreview.controllers.js │ ├── formdataquickcreate.controllers.js │ ├── formdatarender.controllers.js │ ├── mainCtrl.controllers.js │ └── masterData.controllers.js │ ├── index.html │ ├── libraries │ ├── angular │ │ └── js │ │ │ ├── angular-animate.js │ │ │ ├── angular-animate.min.js │ │ │ ├── angular-animate.min.js.map │ │ │ ├── angular-cookies.js │ │ │ ├── angular-cookies.min.js │ │ │ ├── angular-cookies.min.js.map │ │ │ ├── angular-csp.css │ │ │ ├── angular-loader.js │ │ │ ├── angular-loader.min.js │ │ │ ├── angular-loader.min.js.map │ │ │ ├── angular-mocks.js │ │ │ ├── angular-resource.js │ │ │ ├── angular-resource.min.js │ │ │ ├── angular-resource.min.js.map │ │ │ ├── angular-route.js │ │ │ ├── angular-route.min.js │ │ │ ├── angular-route.min.js.map │ │ │ ├── angular-sanitize.js │ │ │ ├── angular-sanitize.min.js │ │ │ ├── angular-sanitize.min.js.map │ │ │ ├── angular-scenario.js │ │ │ ├── angular-touch.js │ │ │ ├── angular-touch.min.js │ │ │ ├── angular-touch.min.js.map │ │ │ ├── angular-ui-router.min.js │ │ │ ├── angular.js │ │ │ ├── angular.min.js │ │ │ ├── angular.min.js.map │ │ │ ├── angular.treeview.js │ │ │ ├── dynamic-forms.js │ │ │ ├── ng-grid.debug.js │ │ │ ├── ui-bootstrap-tpls-0.11.0.js │ │ │ ├── ui-bootstrap-tpls-0.11.0.min.js │ │ │ └── ui-grid.min.js │ ├── bootstrap │ │ ├── css │ │ │ ├── bootstrap-theme.css │ │ │ ├── bootstrap-theme.css.map │ │ │ ├── bootstrap-theme.min.css │ │ │ ├── bootstrap.css │ │ │ ├── bootstrap.css.map │ │ │ └── bootstrap.min.css │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ └── glyphicons-halflings-regular.woff │ │ └── js │ │ │ ├── bootstrap.js │ │ │ └── bootstrap.min.js │ ├── jquery │ │ └── js │ │ │ ├── jquery-2.1.1.js │ │ │ ├── jquery-2.1.1.min.js │ │ │ └── jquery-2.1.1.min.map │ └── ngtags │ │ ├── ng-tags-input.js │ │ ├── ng-tags-input.min.css │ │ └── ng-tags-input.min.js │ └── views │ ├── generic │ └── error.html │ ├── home │ └── home.html │ ├── listentry │ └── listentry.html │ └── navigation │ ├── formbuilder-designOfFormsCreate.html │ ├── formbuilder-listDesignOfForms.html │ ├── formbuilder-listFormData.html │ ├── formbuilder-previewFormData.html │ ├── formbuilder-quickDesignOfFormsCreate.html │ ├── formbuilder-renderFormData.html │ └── formbuilder.html └── test ├── java └── com │ └── formbuilder │ ├── drools │ ├── AssertIfAllPresentRuleTest.java │ ├── AssertIfOneIsPresentRuleTest.java │ ├── CheckIfOneOfTheseIsPresentValueIsPresentRuleTest.java │ ├── CitizenshipRuleTest.java │ ├── HelloDroolsNewTest.java │ ├── Message.java │ ├── ValidateInputTest.java │ └── ValidationRuleTest.java │ ├── h2 │ └── H2FormsTemplateServiceTest.java │ └── mongo │ └── MongoFormsTemplateServiceTest.java └── resources ├── META-INF └── kmodule.xml ├── application.properties ├── com └── formbuilder │ └── drools │ └── citizenship.drl └── schema └── form-template.json /.gitignore: -------------------------------------------------------------------------------- 1 | bookstore-example-with-mvc/.settings 2 | bookstore-example-with-mvc/.classpath 3 | bookstore-example-with-mvc/.project 4 | bookstore-example-with-mvc/target 5 | bookstore-example-with-mvc/bookstore.log 6 | 7 | bookstore-example-with-mvc-webflow/.settings 8 | bookstore-example-with-mvc-webflow/.classpath 9 | bookstore-example-with-mvc-webflow/.project 10 | bookstore-example-with-mvc-webflow/target 11 | bookstore-example-with-mvc-webflow/bookstore.log 12 | 13 | bookstore-spring-boot/.settings 14 | bookstore-spring-boot/.classpath 15 | bookstore-spring-boot/.project 16 | bookstore-spring-boot/target 17 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Spring Boot, Java 8 2 | =================== 3 | 4 | There is a new [spring_boot_form_builder](https://github.com/skprasadu/spring-mvc-examples/tree/master/spring_boot_form_builder) application refer [Wiki](https://github.com/skprasadu/spring-mvc-examples/wiki) for more details. It uses the latest [Spring Boot](http://projects.spring.io/spring-boot/) and [Spring Data](http://projects.spring.io/spring-data/). 5 | 6 | Refer to this [blog](http://krishnasblog.com/2013/02/22/junit-testing-of-spring-mvc-application-introduction/) for initial draft details. But for latest changes refer [Wiki](https://github.com/skprasadu/spring-mvc-examples/wiki). 7 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/README.md: -------------------------------------------------------------------------------- 1 | Spring WebFlow 2 | ========== 3 | 4 | This code base supports latest Spring 4.1.7.RELEASE version. 5 | 6 | In this sample, we demonstrated a simple Bookstore application using Spring MVC and Spring WebFlow, [Kickstrap](http://ajkochanowicz.github.com/Kickstrap/). It demonstrate how to build a Spring MVC application using a TDD approach. 7 | 8 | * To run the WebFlow Layer testcase run 9 | 10 | ``` 11 | mvn clean test -Dtest=com.example.bookstore.web.controller.CreateOrderTest 12 | ``` -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/java/com/example/bookstore/domain/BookSearchCriteria.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.domain; 2 | 3 | /** 4 | * Object to hold the search criteria to search books. 5 | * 6 | * 7 | * 8 | * 9 | */ 10 | public class BookSearchCriteria { 11 | 12 | private String title; 13 | private Category category; 14 | 15 | public String getTitle() { 16 | return this.title; 17 | } 18 | 19 | public void setTitle(String title) { 20 | this.title = title; 21 | } 22 | 23 | public void setCategory(Category category) { 24 | this.category = category; 25 | } 26 | 27 | public Category getCategory() { 28 | return this.category; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/java/com/example/bookstore/domain/Permission.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.domain; 2 | 3 | import java.io.Serializable; 4 | 5 | import javax.persistence.Entity; 6 | import javax.persistence.GeneratedValue; 7 | import javax.persistence.GenerationType; 8 | import javax.persistence.Id; 9 | import javax.persistence.Table; 10 | import javax.persistence.UniqueConstraint; 11 | 12 | /** 13 | * 14 | * 15 | * 16 | * 17 | */ 18 | @Entity 19 | @Table(uniqueConstraints = { @UniqueConstraint(columnNames = { "permission" }) }) 20 | public class Permission implements Serializable { 21 | 22 | @Id 23 | @GeneratedValue(strategy = GenerationType.AUTO) 24 | private Long id; 25 | 26 | private String permission; 27 | 28 | Permission() { 29 | // Form ORM 30 | } 31 | 32 | public Permission(String permission) { 33 | this.permission = permission; 34 | } 35 | 36 | public Long getId() { 37 | return id; 38 | } 39 | 40 | public String getPermission() { 41 | return permission; 42 | } 43 | 44 | public void setPermission(String permission) { 45 | this.permission = permission; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/java/com/example/bookstore/domain/support/CategoryBuilder.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.domain.support; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | import com.example.bookstore.domain.Category; 6 | 7 | /** 8 | * Builds {@link Category} domain objects 9 | * 10 | * 11 | * 12 | * 13 | */ 14 | @Component 15 | public class CategoryBuilder extends EntityBuilder { 16 | 17 | @Override 18 | void initProduct() { 19 | } 20 | 21 | @Override 22 | Category assembleProduct() { 23 | return this.product; 24 | } 25 | 26 | public CategoryBuilder name(String name) { 27 | this.product = new Category(name); 28 | return this; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/java/com/example/bookstore/formatter/DateFormat.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.formatter; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * 10 | * 11 | * 12 | */ 13 | @Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER }) 14 | @Retention(RetentionPolicy.RUNTIME) 15 | public @interface DateFormat { 16 | 17 | String format() default ""; 18 | 19 | } 20 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/java/com/example/bookstore/repository/AccountRepository.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.repository; 2 | 3 | import com.example.bookstore.domain.Account; 4 | 5 | /** 6 | * Repository for working with {@link Account} domain objects 7 | * 8 | * 9 | * 10 | * 11 | */ 12 | public interface AccountRepository { 13 | 14 | Account findByUsername(String username); 15 | 16 | Account findById(long id); 17 | 18 | Account save(Account account); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/java/com/example/bookstore/repository/BookRepository.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.repository; 2 | 3 | import java.util.List; 4 | 5 | import com.example.bookstore.domain.Book; 6 | import com.example.bookstore.domain.BookSearchCriteria; 7 | import com.example.bookstore.domain.Category; 8 | 9 | /** 10 | * Repository for working with {@link Book} domain objects 11 | * 12 | * 13 | * 14 | * 15 | */ 16 | public interface BookRepository { 17 | 18 | Book findById(long id); 19 | 20 | List findByCategory(Category category); 21 | 22 | List findRandom(int count); 23 | 24 | List findBooks(BookSearchCriteria bookSearchCriteria); 25 | 26 | void storeBook(Book book); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/java/com/example/bookstore/repository/CategoryRepository.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.repository; 2 | 3 | import java.util.List; 4 | 5 | import com.example.bookstore.domain.Category; 6 | 7 | /** 8 | * Repository for working with {@link Category} domain objects 9 | * 10 | * 11 | * 12 | * 13 | */ 14 | public interface CategoryRepository { 15 | 16 | List findAll(); 17 | 18 | Category findById(long id); 19 | 20 | void storeCategory(Category category); 21 | } 22 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/java/com/example/bookstore/repository/OrderRepository.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.repository; 2 | 3 | import java.util.List; 4 | 5 | import com.example.bookstore.domain.Account; 6 | import com.example.bookstore.domain.Order; 7 | 8 | /** 9 | * Repository for working with {@link Order} domain objects 10 | * 11 | * 12 | * 13 | * 14 | */ 15 | public interface OrderRepository { 16 | 17 | /** 18 | * Find the {@link Order} for the given id. 19 | * 20 | * @param id id of the order to find. 21 | * @return the order belonging to the id. 22 | */ 23 | Order findById(long id); 24 | 25 | /** 26 | * Save the order in the databse. 27 | */ 28 | Order save(Order order); 29 | 30 | /** 31 | * Find the orders for the given {@link Account}. 32 | * @param customer the account 33 | * @return list of orders for the account, never null 34 | */ 35 | List findByAccount(Account account); 36 | 37 | } 38 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/java/com/example/bookstore/service/AccountService.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.service; 2 | 3 | import com.example.bookstore.domain.Account; 4 | 5 | /** 6 | * Contract for services that work with an {@link Account}. 7 | * 8 | * 9 | * 10 | * 11 | */ 12 | public interface AccountService { 13 | 14 | Account save(Account account); 15 | 16 | /** 17 | * Handles the login logic. If the {@link Account} can be retrieved and the password is correct we get the 18 | * {@link Account}. In all other cases we get a {@link AuthenticationException}. 19 | * @param username the username 20 | * @param password the password 21 | * @return the account 22 | * @throws AuthenticationException if account not found or incorrect password 23 | */ 24 | Account login(String username, String password) throws AuthenticationException; 25 | 26 | Account getAccount(String username); 27 | } 28 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/java/com/example/bookstore/service/AuthenticationException.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.service; 2 | 3 | import org.springframework.http.HttpStatus; 4 | import org.springframework.web.bind.annotation.ResponseStatus; 5 | 6 | /** 7 | * Thrown when username or password are incorect 8 | * 9 | * 10 | * 11 | * 12 | */ 13 | @ResponseStatus(value = HttpStatus.FORBIDDEN) 14 | public class AuthenticationException extends Exception { 15 | 16 | private String code; 17 | 18 | public AuthenticationException(String message, String code) { 19 | super(message); 20 | this.code = code; 21 | } 22 | 23 | public String getCode() { 24 | return this.code; 25 | } 26 | 27 | } -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/java/com/example/bookstore/service/CategoryService.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.service; 2 | 3 | import java.util.List; 4 | 5 | import com.example.bookstore.domain.Category; 6 | 7 | /** 8 | * Contract for services that work with an {@link Category}. 9 | * 10 | * 11 | * 12 | * 13 | */ 14 | public interface CategoryService { 15 | 16 | Category findById(long id); 17 | 18 | List findAll(); 19 | 20 | void addCategory(Category category); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/java/com/example/bookstore/service/CategoryServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.service; 2 | 3 | import java.util.List; 4 | 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.stereotype.Service; 7 | import org.springframework.transaction.annotation.Transactional; 8 | 9 | import com.example.bookstore.domain.Category; 10 | import com.example.bookstore.repository.CategoryRepository; 11 | 12 | /** 13 | * @see CategoryService 14 | * 15 | * 16 | * 17 | */ 18 | @Service("categoryService") 19 | @Transactional(readOnly = true) 20 | public class CategoryServiceImpl implements CategoryService { 21 | 22 | @Autowired 23 | private CategoryRepository categoryRepository; 24 | 25 | @Override 26 | public Category findById(long id) { 27 | return categoryRepository.findById(id); 28 | } 29 | 30 | @Override 31 | public List findAll() { 32 | return this.categoryRepository.findAll(); 33 | } 34 | 35 | @Override 36 | public void addCategory(Category category) { 37 | categoryRepository.storeCategory(category); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/java/com/example/bookstore/web/controller/AuthenticationController.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.web.controller; 2 | 3 | import org.springframework.stereotype.Controller; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.servlet.ModelAndView; 6 | 7 | import com.example.bookstore.service.BookstoreService; 8 | 9 | /** 10 | * This controller talks to the {@link BookstoreService} to authenticate a user. This controller can be used via Spring 11 | * MVC (request mapping login.html) or as POJO for example via Web Flow 12 | * 13 | * 14 | * 15 | * 16 | */ 17 | @Controller 18 | public class AuthenticationController { 19 | 20 | @RequestMapping("public/authentication/login.htm") 21 | public ModelAndView authentication() { 22 | ModelAndView mov = new ModelAndView(); 23 | mov.setViewName("login"); 24 | return mov; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/java/com/example/bookstore/web/controller/MainController.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.web.controller; 2 | 3 | import org.springframework.stereotype.Controller; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.servlet.ModelAndView; 6 | 7 | /** 8 | * Controller for the homepage 9 | * 10 | * 11 | * 12 | * 13 | */ 14 | @Controller 15 | public class MainController { 16 | @RequestMapping("public/main.htm") 17 | public ModelAndView main() { 18 | ModelAndView mov = new ModelAndView(); 19 | mov.setViewName("main"); 20 | return mov; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/java/com/example/bookstore/web/controller/ManageCategoryForm.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.web.controller; 2 | 3 | import org.hibernate.validator.constraints.NotEmpty; 4 | 5 | /** 6 | * Form for adding {@link Category} enitities to the system 7 | * 8 | * @See ManageBookController 9 | * 10 | * 11 | * 12 | */ 13 | public class ManageCategoryForm { 14 | 15 | @NotEmpty 16 | private String category; 17 | 18 | public String getCategory() { 19 | return category; 20 | } 21 | 22 | public void setCategory(String category) { 23 | this.category = category; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/java/com/example/bookstore/web/interceptor/CommonDataHandlerInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.web.interceptor; 2 | 3 | import javax.servlet.http.HttpServletRequest; 4 | import javax.servlet.http.HttpServletResponse; 5 | 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; 8 | 9 | import com.example.bookstore.service.BookstoreService; 10 | 11 | /** 12 | * Makes the random books available on the Servlet requet 13 | * 14 | * 15 | * 16 | * 17 | */ 18 | public class CommonDataHandlerInterceptor extends HandlerInterceptorAdapter { 19 | 20 | @Autowired 21 | private BookstoreService bookstoreService; 22 | 23 | @Override 24 | public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { 25 | request.setAttribute("randomBooks", this.bookstoreService.findRandomBooks()); 26 | return super.preHandle(request, response, handler); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/java/com/example/bookstore/web/security/SecurityContextSupport.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.web.security; 2 | 3 | import org.springframework.security.core.context.SecurityContextHolder; 4 | 5 | /** 6 | * Support class for easy access to our custom {@link BookstoreUserDetails} 7 | * 8 | * 9 | * 10 | * 11 | */ 12 | public class SecurityContextSupport { 13 | 14 | public static BookstoreUserDetails getUserDetails() { 15 | return (BookstoreUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/persistence.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | org.hibernate.ejb.HibernatePersistence 8 | ENABLE_SELECTIVE 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/Thumbs.db -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/about.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/about.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/banner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/banner.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/big_pic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/big_pic.jpg -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/blank.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/books/9780132350884/book_front_cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/books/9780132350884/book_front_cover.png -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/books/9780135974445/book_front_cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/books/9780135974445/book_front_cover.png -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/books/9780201485677/book_front_cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/books/9780201485677/book_front_cover.png -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/books/9780321356680/book_front_cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/books/9780321356680/book_front_cover.png -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/books/9781430209737/book_front_cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/books/9781430209737/book_front_cover.png -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/border.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/border.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/box_bottom.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/box_bottom.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/box_center.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/box_center.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/box_top.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/box_top.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/bullet1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/bullet1.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/bullet2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/bullet2.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/bullet3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/bullet3.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/bullet4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/bullet4.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/bullet5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/bullet5.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/bullet6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/bullet6.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/cart.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/cart.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/cart_thumb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/cart_thumb.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/center_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/center_bg.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/close.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/close.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/closelabel.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/closelabel.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/color1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/color1.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/color2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/color2.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/color3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/color3.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/contact_bt.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/contact_bt.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/csscreme.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/csscreme.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/de.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/de.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/footer_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/footer_bg.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/footer_logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/footer_logo.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/fr.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/fr.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/gb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/gb.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/header.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/header.jpg -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/left_menu_bullet.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/left_menu_bullet.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/loading.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/logo.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/new_icon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/new_icon.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/new_prod_box.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/new_prod_box.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/next.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/next.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/nextlabel.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/nextlabel.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/nl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/nl.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/order_now.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/order_now.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/prev.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/prev.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/prevlabel.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/prevlabel.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/prod1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/prod1.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/prod2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/prod2.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/promo_icon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/promo_icon.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/register_bt.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/register_bt.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/special_icon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/special_icon.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/thumb1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/thumb1.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/thumb2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/thumb2.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/thumb3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/thumb3.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/zoom.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/META-INF/web-resources/images/zoom.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/ehcache.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 8 | 9 | 12 | 13 | 16 | 17 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 7 | 8 | 9 | 10 | 11 | bookstore.log 12 | 13 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/resources/messages_nl.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc-webflow/src/main/resources/messages_nl.properties -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/webapp/WEB-INF/templates/contentOnly.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 4 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 5 | <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> 6 | <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 7 | <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %> 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/webapp/WEB-INF/templates/footer.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 3 | <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %> 4 | 5 | 10 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/webapp/WEB-INF/view/public/authentication/login.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> 3 | <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> 4 | 5 | 6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 21 | 22 |
16 | 17 | 18 | 19 | 20 |
23 | 24 |
25 | 28 |
29 |
-------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/webapp/WEB-INF/view/public/book/detail.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | 3 | 4 | ${book.title} 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
Title${book.title}
Description${book.description}
Author${book.author}
Year${book.year}
ISBN${book.isbn}
Price${book.price}
-------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/webapp/WEB-INF/view/public/createOrders/selectCategory.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 3 | <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> 4 | <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 5 | 6 | 7 | 8 | 9 | 12 | 16 | 17 |
10 | 11 | 13 | 14 | 15 |
18 | 19 |
20 | 21 | 22 |
23 |
24 | 25 | 26 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/webapp/WEB-INF/view/public/createOrders/showSelectedBooks.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> 3 | <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> 4 | <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> 5 | 6 |
7 | 8 | 9 | 10 | 13 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
11 | 12 | 14 | 15 |
${book.key.title}${book.value}
29 |
30 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/webapp/WEB-INF/view/secured/ordersOverview/orderDetail.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | 3 |

Order detail

4 |
5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
Book titleBook descriptionBook price
${orderDetail.book.title}${orderDetail.book.description}${orderDetail.book.price}
25 |
-------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/webapp/WEB-INF/view/secured/ordersOverview/ordersOverview-flow.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/webapp/WEB-INF/view/secured/placeOrders/placeOrders-flow.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc-webflow/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/README.md: -------------------------------------------------------------------------------- 1 | Spring MVC 2 | ========== 3 | 4 | This code base supports latest Spring 4.1.7.RELEASE version. 5 | 6 | In this sample, we demonstrated a simple Bookstoree application using Spring MVC, [Kickstrap](http://ajkochanowicz.github.com/Kickstrap/). It demonstrate how to build a Spring MVC application using a TDD approach. 7 | 8 | * To run the DAO Layer testcase run 9 | 10 | ``` 11 | mvn clean test -Dtest=com.example.bookstore.repository.JpaBookRepositoryTest 12 | ``` 13 | 14 | * To run the Service Layer testcase run 15 | ``` 16 | mvn clean test -Dtest=com.example.bookstore.service.AccountServiceTest 17 | ``` 18 | * To run the Controller Layer testcase run 19 | ``` 20 | mvn clean test -Dtest=com.example.bookstore.web.controller.LoginControllerTest 21 | ``` 22 | * To run the Selenium test for front-end run 23 | ``` 24 | mvn -DskipTests clean package tomcat7:run 25 | 26 | In another window run 27 | 28 | mvn test -Dtest=com.example.bookstore.web.frontend.SeleniumLoginFrontendTest 29 | ``` 30 | 31 | 32 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/java/com/example/bookstore/dao/DummyDao.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.dao; 2 | 3 | /** 4 | * Represents a dummy implementation of a typical DAO. An instance of this 5 | * class will be used to illustrate basic unit testing. 6 | * 7 | * @see BasicUnitTest 8 | * 9 | * 10 | * 11 | */ 12 | import java.util.ArrayList; 13 | import java.util.List; 14 | 15 | public class DummyDao { 16 | 17 | private List database; 18 | 19 | public DummyDao(List database) { 20 | this.database = database; 21 | } 22 | 23 | public void delete(String element) { 24 | database.remove(element); 25 | } 26 | 27 | public void add(String element) { 28 | database.add(element); 29 | } 30 | 31 | public List find(String queryWord) { 32 | List result = new ArrayList(); 33 | for (String element : database) { 34 | if (element.contains(queryWord)) { 35 | result.add(element); 36 | } 37 | } 38 | return result; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/java/com/example/bookstore/domain/BookSearchCriteria.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.domain; 2 | 3 | /** 4 | * Object to hold the search criteria to search books. 5 | * 6 | * 7 | * 8 | * 9 | */ 10 | public class BookSearchCriteria { 11 | 12 | private String title; 13 | private Category category; 14 | 15 | public String getTitle() { 16 | return this.title; 17 | } 18 | 19 | public void setTitle(String title) { 20 | this.title = title; 21 | } 22 | 23 | public void setCategory(Category category) { 24 | this.category = category; 25 | } 26 | 27 | public Category getCategory() { 28 | return this.category; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/java/com/example/bookstore/domain/Permission.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.domain; 2 | 3 | import java.io.Serializable; 4 | 5 | import javax.persistence.Entity; 6 | import javax.persistence.GeneratedValue; 7 | import javax.persistence.GenerationType; 8 | import javax.persistence.Id; 9 | import javax.persistence.Table; 10 | import javax.persistence.UniqueConstraint; 11 | 12 | /** 13 | * 14 | * 15 | * 16 | * 17 | */ 18 | @Entity 19 | @Table(uniqueConstraints = { @UniqueConstraint(columnNames = { "permission" }) }) 20 | public class Permission implements Serializable { 21 | 22 | @Id 23 | @GeneratedValue(strategy = GenerationType.AUTO) 24 | private Long id; 25 | 26 | private String permission; 27 | 28 | Permission() { 29 | // Form ORM 30 | } 31 | 32 | public Permission(String permission) { 33 | this.permission = permission; 34 | } 35 | 36 | public Long getId() { 37 | return id; 38 | } 39 | 40 | public String getPermission() { 41 | return permission; 42 | } 43 | 44 | public void setPermission(String permission) { 45 | this.permission = permission; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/java/com/example/bookstore/domain/support/CategoryBuilder.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.domain.support; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | import com.example.bookstore.domain.Category; 6 | 7 | /** 8 | * Builds {@link Category} domain objects 9 | * 10 | * 11 | * 12 | * 13 | */ 14 | @Component 15 | public class CategoryBuilder extends EntityBuilder { 16 | 17 | @Override 18 | void initProduct() { 19 | } 20 | 21 | @Override 22 | Category assembleProduct() { 23 | return this.product; 24 | } 25 | 26 | public CategoryBuilder name(String name) { 27 | this.product = new Category(name); 28 | return this; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/java/com/example/bookstore/formatter/DateFormat.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.formatter; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * 10 | * 11 | * 12 | */ 13 | @Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER }) 14 | @Retention(RetentionPolicy.RUNTIME) 15 | public @interface DateFormat { 16 | 17 | String format() default ""; 18 | 19 | } 20 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/java/com/example/bookstore/repository/AccountRepository.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.repository; 2 | 3 | import com.example.bookstore.domain.Account; 4 | 5 | /** 6 | * Repository for working with {@link Account} domain objects 7 | * 8 | * 9 | * 10 | * 11 | */ 12 | public interface AccountRepository { 13 | 14 | Account findByUsername(String username); 15 | 16 | Account findById(long id); 17 | 18 | Account save(Account account); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/java/com/example/bookstore/repository/BookRepository.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.repository; 2 | 3 | import java.util.List; 4 | 5 | import com.example.bookstore.domain.Book; 6 | import com.example.bookstore.domain.BookSearchCriteria; 7 | import com.example.bookstore.domain.Category; 8 | 9 | /** 10 | * Repository for working with {@link Book} domain objects 11 | * 12 | * 13 | * 14 | * 15 | */ 16 | public interface BookRepository { 17 | 18 | Book findById(long id); 19 | 20 | List findByCategory(Category category); 21 | 22 | List findRandom(int count); 23 | 24 | List findBooks(BookSearchCriteria bookSearchCriteria); 25 | 26 | void storeBook(Book book); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/java/com/example/bookstore/repository/CategoryRepository.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.repository; 2 | 3 | import java.util.List; 4 | 5 | import com.example.bookstore.domain.Category; 6 | 7 | /** 8 | * Repository for working with {@link Category} domain objects 9 | * 10 | * 11 | * 12 | * 13 | */ 14 | public interface CategoryRepository { 15 | 16 | List findAll(); 17 | 18 | Category findById(long id); 19 | 20 | void storeCategory(Category category); 21 | } 22 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/java/com/example/bookstore/repository/JpaCategoryRepository.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.repository; 2 | 3 | import java.util.List; 4 | 5 | import javax.persistence.EntityManager; 6 | import javax.persistence.PersistenceContext; 7 | import javax.persistence.TypedQuery; 8 | 9 | import org.springframework.stereotype.Repository; 10 | 11 | import com.example.bookstore.domain.Category; 12 | 13 | /** 14 | * JPA based {@link CategoryRepository} implementation. 15 | * 16 | * 17 | * 18 | * 19 | */ 20 | @Repository("categoryRepository") 21 | public class JpaCategoryRepository implements CategoryRepository { 22 | 23 | @PersistenceContext 24 | private EntityManager entityManager; 25 | 26 | @Override 27 | public List findAll() { 28 | String hql = "select c from Category c order by c.name"; 29 | TypedQuery query = this.entityManager.createQuery(hql, Category.class); 30 | return query.setHint("org.hibernate.cacheable", true).getResultList(); 31 | } 32 | 33 | @Override 34 | public Category findById(long id) { 35 | return this.entityManager.find(Category.class, id); 36 | } 37 | 38 | @Override 39 | public void storeCategory(Category category) { 40 | entityManager.persist(category); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/java/com/example/bookstore/repository/OrderRepository.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.repository; 2 | 3 | import java.util.List; 4 | 5 | import com.example.bookstore.domain.Account; 6 | import com.example.bookstore.domain.Order; 7 | 8 | /** 9 | * Repository for working with {@link Order} domain objects 10 | * 11 | * 12 | * 13 | * 14 | */ 15 | public interface OrderRepository { 16 | 17 | /** 18 | * Find the {@link Order} for the given id. 19 | * 20 | * @param id id of the order to find. 21 | * @return the order belonging to the id. 22 | */ 23 | Order findById(long id); 24 | 25 | /** 26 | * Save the order in the databse. 27 | */ 28 | Order save(Order order); 29 | 30 | /** 31 | * Find the orders for the given {@link Account}. 32 | * @param customer the account 33 | * @return list of orders for the account, never null 34 | */ 35 | List findByAccount(Account account); 36 | 37 | } 38 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/java/com/example/bookstore/service/AccountService.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.service; 2 | 3 | import com.example.bookstore.domain.Account; 4 | 5 | /** 6 | * Contract for services that work with an {@link Account}. 7 | * 8 | * 9 | * 10 | * 11 | */ 12 | public interface AccountService { 13 | 14 | Account save(Account account); 15 | 16 | /** 17 | * Handles the login logic. If the {@link Account} can be retrieved and the password is correct we get the 18 | * {@link Account}. In all other cases we get a {@link AuthenticationException}. 19 | * @param username the username 20 | * @param password the password 21 | * @return the account 22 | * @throws AuthenticationException if account not found or incorrect password 23 | */ 24 | Account login(String username, String password) throws AuthenticationException; 25 | 26 | Account getAccount(String username); 27 | } 28 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/java/com/example/bookstore/service/AuthenticationException.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.service; 2 | 3 | import org.springframework.http.HttpStatus; 4 | import org.springframework.web.bind.annotation.ResponseStatus; 5 | 6 | /** 7 | * Thrown when username or password are incorect 8 | * 9 | * 10 | * 11 | * 12 | */ 13 | @ResponseStatus(value = HttpStatus.FORBIDDEN) 14 | public class AuthenticationException extends Exception { 15 | 16 | private String code; 17 | 18 | public AuthenticationException(String message, String code) { 19 | super(message); 20 | this.code = code; 21 | } 22 | 23 | public String getCode() { 24 | return this.code; 25 | } 26 | 27 | } -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/java/com/example/bookstore/service/CategoryService.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.service; 2 | 3 | import java.util.List; 4 | 5 | import com.example.bookstore.domain.Category; 6 | 7 | /** 8 | * Contract for services that work with an {@link Category}. 9 | * 10 | * 11 | * 12 | * 13 | */ 14 | public interface CategoryService { 15 | 16 | Category findById(long id); 17 | 18 | List findAll(); 19 | 20 | void addCategory(Category category); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/java/com/example/bookstore/service/CategoryServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.service; 2 | 3 | import java.util.List; 4 | 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.stereotype.Service; 7 | import org.springframework.transaction.annotation.Transactional; 8 | 9 | import com.example.bookstore.domain.Category; 10 | import com.example.bookstore.repository.CategoryRepository; 11 | 12 | /** 13 | * @see CategoryService 14 | * 15 | * 16 | * 17 | */ 18 | @Service("categoryService") 19 | @Transactional(readOnly = true) 20 | public class CategoryServiceImpl implements CategoryService { 21 | 22 | @Autowired 23 | private CategoryRepository categoryRepository; 24 | 25 | @Override 26 | public Category findById(long id) { 27 | return categoryRepository.findById(id); 28 | } 29 | 30 | @Override 31 | public List findAll() { 32 | return this.categoryRepository.findAll(); 33 | } 34 | 35 | @Override 36 | public void addCategory(Category category) { 37 | categoryRepository.storeCategory(category); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/java/com/example/bookstore/web/config/ViewConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.web.config; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.web.servlet.view.tiles2.TilesConfigurer; 6 | import org.springframework.web.servlet.view.tiles2.TilesViewResolver; 7 | 8 | /** 9 | * Spring MVC configuration for the View Technologies. 10 | * 11 | * 12 | * 13 | * 14 | */ 15 | @Configuration 16 | public class ViewConfiguration { 17 | 18 | @Bean 19 | public TilesConfigurer tilesConfigurer() { 20 | return new TilesConfigurer(); 21 | } 22 | 23 | @Bean 24 | public TilesViewResolver tilesViewResolver() { 25 | TilesViewResolver tilesViewResolver = new TilesViewResolver(); 26 | tilesViewResolver.setOrder(2); 27 | return tilesViewResolver; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/java/com/example/bookstore/web/controller/LogoutController.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.web.controller; 2 | 3 | import javax.servlet.http.HttpSession; 4 | 5 | import org.springframework.stereotype.Controller; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RequestMethod; 8 | 9 | /** 10 | * Controller to handle logout. 11 | * 12 | * 13 | * 14 | * 15 | */ 16 | @Controller 17 | public class LogoutController { 18 | 19 | @RequestMapping(value = "/logout", method = RequestMethod.GET) 20 | public String logout(HttpSession session) { 21 | session.invalidate(); 22 | return "redirect:/index.htm"; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/java/com/example/bookstore/web/interceptor/CommonDataInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.web.interceptor; 2 | 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | import org.springframework.ui.ModelMap; 5 | import org.springframework.web.context.request.WebRequest; 6 | import org.springframework.web.context.request.WebRequestInterceptor; 7 | 8 | import com.example.bookstore.service.BookstoreService; 9 | 10 | /** 11 | * {@code WebRequestInterceptor} implementation to add common data (random books) to the model. 12 | * 13 | * 14 | * 15 | */ 16 | public class CommonDataInterceptor implements WebRequestInterceptor { 17 | 18 | @Autowired 19 | private BookstoreService bookstoreService; 20 | 21 | @Override 22 | public void preHandle(WebRequest request) throws Exception { 23 | } 24 | 25 | @Override 26 | public void postHandle(WebRequest request, ModelMap model) throws Exception { 27 | if (model != null) { 28 | model.addAttribute("randomBooks", this.bookstoreService.findRandomBooks()); 29 | } 30 | 31 | } 32 | 33 | @Override 34 | public void afterCompletion(WebRequest request, Exception ex) throws Exception { 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/java/com/example/bookstore/web/method/support/SessionAttribute.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.web.method.support; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | /** 10 | * Annotation to mark a method argument or return value to be retrieved or stored in the {@code javax.servlet.http.HttpSession}. 11 | * 12 | * 13 | * 14 | */ 15 | @Target({ ElementType.PARAMETER, ElementType.METHOD }) 16 | @Retention(RetentionPolicy.RUNTIME) 17 | @Documented 18 | public @interface SessionAttribute { 19 | 20 | /** 21 | * The name of the session attribute to bind to. 22 | */ 23 | String value() default ""; 24 | 25 | /** 26 | * Whether the parameter is required. 27 | */ 28 | boolean required() default true; 29 | 30 | /** 31 | * Wheter attribute needs to be exposed as model attribtue. 32 | */ 33 | boolean exposeAsModelAttribute() default false; 34 | } 35 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/java/com/example/bookstore/web/servlet/SimpleServletHandlerAdapter.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.web.servlet; 2 | 3 | import javax.servlet.Servlet; 4 | import javax.servlet.http.HttpServletRequest; 5 | import javax.servlet.http.HttpServletResponse; 6 | 7 | import org.springframework.web.servlet.HandlerAdapter; 8 | import org.springframework.web.servlet.ModelAndView; 9 | 10 | public class SimpleServletHandlerAdapter implements HandlerAdapter { 11 | 12 | @Override 13 | public boolean supports(Object handler) { 14 | return (handler instanceof Servlet); 15 | } 16 | 17 | @Override 18 | public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) 19 | throws Exception { 20 | 21 | ((Servlet) handler).service(request, response); 22 | return null; 23 | } 24 | 25 | @Override 26 | public long getLastModified(HttpServletRequest request, Object handler) { 27 | return -1; 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/java/com/example/bookstore/web/view/SimpleConfigurableViewResolver.java: -------------------------------------------------------------------------------- 1 | package com.example.bookstore.web.view; 2 | 3 | import java.util.HashMap; 4 | import java.util.Locale; 5 | import java.util.Map; 6 | 7 | import org.springframework.web.servlet.View; 8 | import org.springframework.web.servlet.ViewResolver; 9 | 10 | /** 11 | * Very simple implementation of a {@link ViewResolver}. It uses an internal {@link Map} to link the name of a view to a concrete {@link View} implementation. 12 | * 13 | * 14 | * 15 | * 16 | */ 17 | public class SimpleConfigurableViewResolver implements ViewResolver { 18 | 19 | private Map views = new HashMap(); 20 | 21 | @Override 22 | public View resolveViewName(String viewName, Locale locale) throws Exception { 23 | return this.views.get(viewName); 24 | } 25 | 26 | public void setViews(Map views) { 27 | this.views = views; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/persistence.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | org.hibernate.ejb.HibernatePersistence 8 | ENABLE_SELECTIVE 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/animatecss/config.ks: -------------------------------------------------------------------------------- 1 | http://netdna.getkickstrap.com/Kickstrap/apps/animatecss/config.ks, //animate.css 2 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/bootstrap/affix/config.ks: -------------------------------------------------------------------------------- 1 | ../../../bootstrap/js/bootstrap-affix.js -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/bootstrap/alert/advisory.js: -------------------------------------------------------------------------------- 1 | consoleLog('Please be advised, running Bootstrap as an app can be problematic in some circumstances. If you run into issues, consider directly linking to the js files instead.'); -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/bootstrap/alert/config.ks: -------------------------------------------------------------------------------- 1 | ../../../bootstrap/js/bootstrap-alert.js 2 | advisory.js -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/bootstrap/button/config.ks: -------------------------------------------------------------------------------- 1 | ../../../bootstrap/js/bootstrap-button.js -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/bootstrap/carousel/config.ks: -------------------------------------------------------------------------------- 1 | ../../../bootstrap/js/bootstrap-carousel.js -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/bootstrap/collapse/config.ks: -------------------------------------------------------------------------------- 1 | ../../../bootstrap/js/bootstrap-collapse.js -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/bootstrap/config.ks: -------------------------------------------------------------------------------- 1 | http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.0.4/bootstrap.min.js, //bootstrap.js -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/bootstrap/dropdown/config.ks: -------------------------------------------------------------------------------- 1 | ../../../bootstrap/js/bootstrap-dropdown.js -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/bootstrap/modal/config.ks: -------------------------------------------------------------------------------- 1 | ../../../bootstrap/js/bootstrap-modal.js -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/bootstrap/popover/config.ks: -------------------------------------------------------------------------------- 1 | ../../../bootstrap/js/bootstrap-popover.js -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/bootstrap/scrollspy/config.ks: -------------------------------------------------------------------------------- 1 | ../../../bootstrap/js/bootstrap-scrollspy.js -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/bootstrap/tab/config.ks: -------------------------------------------------------------------------------- 1 | ../../../bootstrap/js/bootstrap-tab.js -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/bootstrap/tooltip/config.ks: -------------------------------------------------------------------------------- 1 | ../../../bootstrap/js/bootstrap-tooltip.js -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/bootstrap/transition/config.ks: -------------------------------------------------------------------------------- 1 | ../../../bootstrap/js/bootstrap-transition.js -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/bootstrap/typeahead/config.ks: -------------------------------------------------------------------------------- 1 | ../../../bootstrap/js/bootstrap-typeahead.js -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/chosen/chosen-init.js: -------------------------------------------------------------------------------- 1 | $(".chzn-select").chosen(); $(".chzn-select-deselect").chosen({allow_single_deselect:true}); -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/chosen/chosen-sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/chosen/chosen-sprite.png -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/chosen/config.ks: -------------------------------------------------------------------------------- 1 | http://netdna.getkickstrap.com/Kickstrap/apps/chosen/chosen.jquery.js, //chosen.jquery.js,http://netdna.getkickstrap.com/Kickstrap/apps/chosen/chosen.css, //chosen.css 2 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/colorschemer/arrow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/colorschemer/arrow.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/colorschemer/config.ks: -------------------------------------------------------------------------------- 1 | http://netdna.getkickstrap.com/Kickstrap/apps/colorschemer/consoletools.js, //consoletools.js 2 | http://netdna.getkickstrap.com/Kickstrap/apps/colorschemer/newbox.js, //newbox.js 3 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/colorschemer/cross.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/colorschemer/cross.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/colorschemer/demo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | jscolor demo 4 | 5 | 6 | 7 | 8 | 9 | Click here: 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/colorschemer/hs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/colorschemer/hs.png -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/colorschemer/hv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/colorschemer/hv.png -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/colorschemer/newbox.js: -------------------------------------------------------------------------------- 1 | $('body').append(''); 2 | 3 | setColor('red'); -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/firebuglite/config.ks: -------------------------------------------------------------------------------- 1 | http://netdna.getkickstrap.com/Kickstrap/apps/firebuglite/firebuglite.js, //firebuglite.js 2 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/firebuglite/firebuglite.js: -------------------------------------------------------------------------------- 1 | var url = "javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F[i+'NS']&&F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','4','firebug-lite.js','releases/lite/latest/skin/xp/sprite.png','https://getfirebug.com/','#startOpened');" 2 | 3 | window.location = url; 4 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/jQueryLint/config.ks: -------------------------------------------------------------------------------- 1 | http://netdna.getkickstrap.com/Kickstrap/apps/jQueryLint/jquery.lint.min.js, //jquery.lint.min.js 2 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/knockout/config.ks: -------------------------------------------------------------------------------- 1 | http://netdna.getkickstrap.com/Kickstrap/apps/knockout/knockout.min.js, //knockout.min.js 2 | vhttp://netdna.getkickstrap.com/Kickstrap/apps/knockout/view.model.js, //view.model.js 3 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/knockout/view.model.js: -------------------------------------------------------------------------------- 1 | // This is a simple *viewmodel* - JavaScript that defines the data and behavior of your UI 2 | function AppViewModel() { 3 | this.welcomeMessage = "Knockout JS is Running!"; 4 | } 5 | 6 | // Activates knockout.js 7 | ko.applyBindings(new AppViewModel()); -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/pinesnotify/config.ks: -------------------------------------------------------------------------------- 1 | http://netdna.getkickstrap.com/Kickstrap/apps/pinesnotify/jquery.pnotify.default.css, //jquery.pnotify.default.css, http://netdna.getkickstrap.com/Kickstrap/apps/pinesnotify/jquery.pnotify.js, //jquery.pnotify.js 2 | 3 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/pinesnotify/use for pines style icons/jquery.pnotify.default.icons.css: -------------------------------------------------------------------------------- 1 | /* 2 | Document : jquery.pnotify.default.icons.css 3 | Created on : Nov 24, 2009, 2:58:21 PM 4 | Author : Hunter Perrin 5 | Version : 1.2.0 6 | Link : http://pinesframework.org/pnotify/ 7 | Description: 8 | Pines Icon styling for Pines Notify. 9 | */ 10 | 11 | .ui-pnotify .picon { 12 | background-color: transparent; 13 | background-repeat: no-repeat; 14 | background-position: center center; 15 | width: 17px; 16 | height: 17px; 17 | } 18 | .ui-pnotify-title { 19 | line-height: 17px; 20 | min-height: 17px; 21 | } -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/universal/config.ks: -------------------------------------------------------------------------------- 1 | http://netdna.getkickstrap.com/Kickstrap/apps/universal/jQueryUI/jquery-ui-1.8.min.js, //jQueryUI/jquery-ui-1.8.min.js 2 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/universal/what-is-this.txt: -------------------------------------------------------------------------------- 1 | Some of your apps will require the same dependencies to be loaded before they can run. jQuery UI is a good example of this. 2 | Instead of having multiple copies of jQUI in each of those app folder, just put them in universal. 3 | 4 | Kickstrap will load all universal files first, then it looks in your apps, loads the required dependencies in your apps. For each app whose required resources are loaded, its 5 | dependent resources (the second line) are then loaded. 6 | 7 | Put your universal dependencies in here and list them in config.ks. You don't need to put "universal" in your list of apps. They will be added automatically. 8 | 9 | KS WINDOW 10 | 11 | This is something new we're testing which allows apps to reuse a simulated window. -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/apps/updater/config.ks: -------------------------------------------------------------------------------- 1 | init.js 2 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/bootstrap/img/glyphicons-halflings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/bootstrap/img/glyphicons-halflings-white.png -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/bootstrap/img/glyphicons-halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/bootstrap/img/glyphicons-halflings.png -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/bootstrap/js/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "validthis": true, 3 | "laxcomma" : true, 4 | "laxbreak" : true, 5 | "browser" : true, 6 | "eqnull" : true, 7 | "debug" : true, 8 | "devel" : true, 9 | "boss" : true, 10 | "expr" : true, 11 | "asi" : true 12 | } -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/bootstrap/less/accordion.less: -------------------------------------------------------------------------------- 1 | // 2 | // Accordion 3 | // -------------------------------------------------- 4 | 5 | 6 | // Parent container 7 | .accordion { 8 | margin-bottom: @baseLineHeight; 9 | } 10 | 11 | // Group == heading + body 12 | .accordion-group { 13 | margin-bottom: 2px; 14 | border: 1px solid #e5e5e5; 15 | .border-radius(4px); 16 | } 17 | .accordion-heading { 18 | border-bottom: 0; 19 | } 20 | .accordion-heading .accordion-toggle { 21 | display: block; 22 | padding: 8px 15px; 23 | } 24 | 25 | // General toggle styles 26 | .accordion-toggle { 27 | cursor: pointer; 28 | } 29 | 30 | // Inner needs the styles because you can't animate properly with any styles on the element 31 | .accordion-inner { 32 | padding: 9px 15px; 33 | border-top: 1px solid #e5e5e5; 34 | } 35 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/bootstrap/less/breadcrumbs.less: -------------------------------------------------------------------------------- 1 | // 2 | // Breadcrumbs 3 | // -------------------------------------------------- 4 | 5 | 6 | .breadcrumb { 7 | padding: 8px 15px; 8 | margin: 0 0 @baseLineHeight; 9 | list-style: none; 10 | background-color: #f5f5f5; 11 | .border-radius(4px); 12 | li { 13 | display: inline-block; 14 | .ie7-inline-block(); 15 | text-shadow: 0 1px 0 @white; 16 | } 17 | .divider { 18 | padding: 0 5px; 19 | color: #ccc; 20 | } 21 | .active { 22 | color: @grayLight; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/bootstrap/less/close.less: -------------------------------------------------------------------------------- 1 | // 2 | // Close icons 3 | // -------------------------------------------------- 4 | 5 | 6 | .close { 7 | float: right; 8 | font-size: 20px; 9 | font-weight: bold; 10 | line-height: @baseLineHeight; 11 | color: @black; 12 | text-shadow: 0 1px 0 rgba(255,255,255,1); 13 | .opacity(20); 14 | &:hover { 15 | color: @black; 16 | text-decoration: none; 17 | cursor: pointer; 18 | .opacity(40); 19 | } 20 | } 21 | 22 | // Additional properties for button version 23 | // iOS requires the button element instead of an anchor tag. 24 | // If you want the anchor version, it requires `href="#"`. 25 | button.close { 26 | padding: 0; 27 | cursor: pointer; 28 | background: transparent; 29 | border: 0; 30 | -webkit-appearance: none; 31 | } -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/bootstrap/less/component-animations.less: -------------------------------------------------------------------------------- 1 | // 2 | // Component animations 3 | // -------------------------------------------------- 4 | 5 | 6 | .fade { 7 | opacity: 0; 8 | .transition(opacity .15s linear); 9 | &.in { 10 | opacity: 1; 11 | } 12 | } 13 | 14 | .collapse { 15 | position: relative; 16 | height: 0; 17 | overflow: hidden; 18 | .transition(height .35s ease); 19 | &.in { 20 | height: auto; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/bootstrap/less/grid.less: -------------------------------------------------------------------------------- 1 | // 2 | // Grid system 3 | // -------------------------------------------------- 4 | 5 | 6 | // Fixed (940px) 7 | #grid > .core(@gridColumnWidth, @gridGutterWidth); 8 | 9 | // Fluid (940px) 10 | #grid > .fluid(@fluidGridColumnWidth, @fluidGridGutterWidth); 11 | 12 | // Reset utility classes due to specificity 13 | [class*="span"].hide, 14 | .row-fluid [class*="span"].hide { 15 | display: none; 16 | } 17 | 18 | [class*="span"].pull-right, 19 | .row-fluid [class*="span"].pull-right { 20 | float: right; 21 | } 22 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/bootstrap/less/hero-unit.less: -------------------------------------------------------------------------------- 1 | // 2 | // Hero unit 3 | // -------------------------------------------------- 4 | 5 | 6 | .hero-unit { 7 | padding: 60px; 8 | margin-bottom: 30px; 9 | background-color: @heroUnitBackground; 10 | .border-radius(6px); 11 | h1 { 12 | margin-bottom: 0; 13 | font-size: 60px; 14 | line-height: 1; 15 | color: @heroUnitHeadingColor; 16 | letter-spacing: -1px; 17 | } 18 | p { 19 | font-size: 18px; 20 | font-weight: 200; 21 | line-height: @baseLineHeight * 1.5; 22 | color: @heroUnitLeadColor; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/bootstrap/less/layouts.less: -------------------------------------------------------------------------------- 1 | // 2 | // Layouts 3 | // -------------------------------------------------- 4 | 5 | 6 | // Container (centered, fixed-width layouts) 7 | .container { 8 | .container-fixed(); 9 | } 10 | 11 | // Fluid layouts (left aligned, with sidebar, min- & max-width content) 12 | .container-fluid { 13 | padding-right: @gridGutterWidth; 14 | padding-left: @gridGutterWidth; 15 | .clearfix(); 16 | } -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/bootstrap/less/pager.less: -------------------------------------------------------------------------------- 1 | // 2 | // Pager pagination 3 | // -------------------------------------------------- 4 | 5 | 6 | .pager { 7 | margin: @baseLineHeight 0; 8 | list-style: none; 9 | text-align: center; 10 | .clearfix(); 11 | } 12 | .pager li { 13 | display: inline; 14 | } 15 | .pager a, 16 | .pager span { 17 | display: inline-block; 18 | padding: 5px 14px; 19 | background-color: #fff; 20 | border: 1px solid #ddd; 21 | .border-radius(15px); 22 | } 23 | .pager a:hover { 24 | text-decoration: none; 25 | background-color: #f5f5f5; 26 | } 27 | .pager .next a, 28 | .pager .next span { 29 | float: right; 30 | } 31 | .pager .previous a { 32 | float: left; 33 | } 34 | .pager .disabled a, 35 | .pager .disabled a:hover, 36 | .pager .disabled span { 37 | color: @grayLight; 38 | background-color: #fff; 39 | cursor: default; 40 | } -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/bootstrap/less/responsive-1200px-min.less: -------------------------------------------------------------------------------- 1 | // 2 | // Responsive: Large desktop and up 3 | // -------------------------------------------------- 4 | 5 | 6 | @media (min-width: 1200px) { 7 | 8 | // Fixed grid 9 | #grid > .core(@gridColumnWidth1200, @gridGutterWidth1200); 10 | 11 | // Fluid grid 12 | #grid > .fluid(@fluidGridColumnWidth1200, @fluidGridGutterWidth1200); 13 | 14 | // Input grid 15 | #grid > .input(@gridColumnWidth1200, @gridGutterWidth1200); 16 | 17 | // Thumbnails 18 | .thumbnails { 19 | margin-left: -@gridGutterWidth1200; 20 | } 21 | .thumbnails > li { 22 | margin-left: @gridGutterWidth1200; 23 | } 24 | .row-fluid .thumbnails { 25 | margin-left: 0; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/bootstrap/less/responsive-768px-979px.less: -------------------------------------------------------------------------------- 1 | // 2 | // Responsive: Tablet to desktop 3 | // -------------------------------------------------- 4 | 5 | 6 | @media (min-width: 768px) and (max-width: 979px) { 7 | 8 | // Fixed grid 9 | #grid > .core(@gridColumnWidth768, @gridGutterWidth768); 10 | 11 | // Fluid grid 12 | #grid > .fluid(@fluidGridColumnWidth768, @fluidGridGutterWidth768); 13 | 14 | // Input grid 15 | #grid > .input(@gridColumnWidth768, @gridGutterWidth768); 16 | 17 | // No need to reset .thumbnails here since it's the same @gridGutterWidth 18 | 19 | } 20 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/bootstrap/less/scaffolding.less: -------------------------------------------------------------------------------- 1 | // 2 | // Scaffolding 3 | // -------------------------------------------------- 4 | 5 | 6 | // Body reset 7 | // ------------------------- 8 | 9 | body { 10 | margin: 0; 11 | font-family: @baseFontFamily; 12 | font-size: @baseFontSize; 13 | line-height: @baseLineHeight; 14 | color: @textColor; 15 | background-color: @bodyBackground; 16 | } 17 | 18 | 19 | // Links 20 | // ------------------------- 21 | 22 | a { 23 | color: @linkColor; 24 | text-decoration: none; 25 | } 26 | a:hover { 27 | color: @linkColorHover; 28 | text-decoration: underline; 29 | } 30 | 31 | 32 | // Images 33 | // ------------------------- 34 | 35 | // Rounded corners 36 | .img-rounded { 37 | .border-radius(6px); 38 | } 39 | 40 | // Add polaroid-esque trim 41 | .img-polaroid { 42 | padding: 4px; 43 | background-color: #fff; 44 | border: 1px solid #ccc; 45 | border: 1px solid rgba(0,0,0,.2); 46 | .box-shadow(0 1px 3px rgba(0,0,0,.1)); 47 | } 48 | 49 | // Perfect circle 50 | .img-circle { 51 | .border-radius(500px); // crank the border-radius so it works with most reasonably sized images 52 | } 53 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/bootstrap/less/utilities.less: -------------------------------------------------------------------------------- 1 | // 2 | // Utility classes 3 | // -------------------------------------------------- 4 | 5 | 6 | // Quick floats 7 | .pull-right { 8 | float: right; 9 | } 10 | .pull-left { 11 | float: left; 12 | } 13 | 14 | // Toggling content 15 | .hide { 16 | display: none; 17 | } 18 | .show { 19 | display: block; 20 | } 21 | 22 | // Visibility 23 | .invisible { 24 | visibility: hidden; 25 | } 26 | 27 | // For Affix plugin 28 | .affix { 29 | position: fixed; 30 | } 31 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/bootstrap/less/wells.less: -------------------------------------------------------------------------------- 1 | // 2 | // Wells 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .well { 8 | min-height: 20px; 9 | padding: 19px; 10 | margin-bottom: 20px; 11 | background-color: @wellBackground; 12 | border: 1px solid darken(@wellBackground, 7%); 13 | .border-radius(4px); 14 | .box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); 15 | blockquote { 16 | border-color: #ddd; 17 | border-color: rgba(0,0,0,.15); 18 | } 19 | } 20 | 21 | // Sizes 22 | .well-large { 23 | padding: 24px; 24 | .border-radius(6px); 25 | } 26 | .well-small { 27 | padding: 9px; 28 | .border-radius(3px); 29 | } 30 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/css/readme.txt: -------------------------------------------------------------------------------- 1 | Why is this empty? 2 | 3 | If you prefer not to use less.js client-side, you can use the build tools in Kickstrap/build and your stylesheets will be automatically generated here. -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/caching.less: -------------------------------------------------------------------------------- 1 | // Caching: This file works by magic to turn on caching. 2 | 3 | @importedJS: ""; 4 | script#caching {content: @importedJS;} 5 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/console.less: -------------------------------------------------------------------------------- 1 | // I help catch consoleLog() statements 2 | 3 | @importedJS2: ""; 4 | script#console {content: @importedJS2; ie8: @importedJS2;} 5 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/FontAwesome-Vectors.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/FontAwesome-Vectors.pdf -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/FontAwesome.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/FontAwesome.ttf -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/README.md: -------------------------------------------------------------------------------- 1 | #Font Awesome 2.0 2 | ##the iconic font designed for use with Twitter Bootstrap 3 | 4 | The full suite of pictographic icons, examples, and documentation can be found at: 5 | http://fortawesome.github.com/Font-Awesome/ 6 | 7 | ##Contact 8 | - Email: dave@davegandy.com 9 | - Twitter: http://twitter.com/fortaweso_me 10 | - Work: Lead Product Designer @ http://kyru.us 11 | 12 | ##License 13 | Version 2.0 of the Font Awesome font, CSS, and LESS files are licensed under CC BY 3.0: 14 | http://creativecommons.org/licenses/by/3.0/ 15 | A mention of 'Font Awesome - http://fortawesome.github.com/Font-Awesome' 16 | in human-readable source code is considered acceptable attribution (most common on the 17 | web). If human readable source code is not available to the end user, a mention in an 'About' 18 | or 'Credits' screen is considered acceptable (most common in desktop or mobile software). 19 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/css/prettify.css: -------------------------------------------------------------------------------- 1 | .com { color: #93a1a1; } 2 | .lit { color: #195f91; } 3 | .pun, .opn, .clo { color: #93a1a1; } 4 | .fun { color: #dc322f; } 5 | .str, .atv { color: #D14; } 6 | .kwd, .linenums .tag { color: #1e347b; } 7 | .typ, .atn, .dec, .var { color: teal; } 8 | .pln { color: #48484c; } 9 | 10 | .prettyprint { 11 | padding: 8px; 12 | background-color: #f7f7f9; 13 | border: 1px solid #e1e1e8; 14 | } 15 | .prettyprint.linenums { 16 | -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 17 | -moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 18 | box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 19 | } 20 | 21 | /* Specify class=linenums on a pre to get line numbering */ 22 | ol.linenums { 23 | margin: 0 0 0 33px; /* IE indents via margin-left */ 24 | } 25 | ol.linenums li { 26 | padding-left: 12px; 27 | color: #bebec5; 28 | line-height: 18px; 29 | text-shadow: 0 1px 0 #fff; 30 | } -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/font/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/font/fontawesome-webfont.eot -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/font/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/font/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/font/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/font/fontawesome-webfont.woff -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/font/museo_slab_300-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/font/museo_slab_300-webfont.eot -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/font/museo_slab_300-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/font/museo_slab_300-webfont.ttf -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/font/museo_slab_500-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/font/museo_slab_500-webfont.eot -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/font/museo_slab_500-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/font/museo_slab_500-webfont.ttf -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/font/proximanova-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/font/proximanova-webfont.eot -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/font/proximanova-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/font/proximanova-webfont.ttf -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/ico/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/ico/favicon.ico -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/less/font-site.less: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'museo-slab'; 3 | src: url('../font/museo_slab_300-webfont.eot'); 4 | src: url('../font/museo_slab_300-webfont.eot?#iefix') format('embedded-opentype'), 5 | url('../font/museo_slab_300-webfont.ttf') format('truetype'); 6 | font-weight: normal; 7 | font-style: normal; 8 | } 9 | 10 | @font-face { 11 | font-family: 'museo-slab'; 12 | src: url('../font/museo_slab_500-webfont.eot'); 13 | src: url('../font/museo_slab_500-webfont.eot?#iefix') format('embedded-opentype'), 14 | url('../font/museo_slab_500-webfont.ttf') format('truetype'); 15 | font-weight: bold; 16 | font-style: normal; 17 | } 18 | 19 | @font-face { 20 | font-family: 'proxima-nova'; 21 | src: url('../font/proximanova-webfont.eot'); 22 | src: url('../font/proximanova-webfont.eot?#iefix') format('embedded-opentype'), 23 | url('../font/proximanova-webfont.ttf') format('truetype'); 24 | font-weight: normal; 25 | font-style: normal; 26 | } 27 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/less/twbs-203/accordion.less: -------------------------------------------------------------------------------- 1 | // ACCORDION 2 | // --------- 3 | 4 | 5 | // Parent container 6 | .accordion { 7 | margin-bottom: @baseLineHeight; 8 | } 9 | 10 | // Group == heading + body 11 | .accordion-group { 12 | margin-bottom: 2px; 13 | border: 1px solid #e5e5e5; 14 | .border-radius(4px); 15 | } 16 | .accordion-heading { 17 | border-bottom: 0; 18 | } 19 | .accordion-heading .accordion-toggle { 20 | display: block; 21 | padding: 8px 15px; 22 | } 23 | 24 | // General toggle styles 25 | .accordion-toggle { 26 | cursor: pointer; 27 | } 28 | 29 | // Inner needs the styles because you can't animate properly with any styles on the element 30 | .accordion-inner { 31 | padding: 9px 15px; 32 | border-top: 1px solid #e5e5e5; 33 | } 34 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/less/twbs-203/breadcrumbs.less: -------------------------------------------------------------------------------- 1 | // BREADCRUMBS 2 | // ----------- 3 | 4 | .breadcrumb { 5 | padding: 7px 14px; 6 | margin: 0 0 @baseLineHeight; 7 | list-style: none; 8 | #gradient > .vertical(@white, #f5f5f5); 9 | border: 1px solid #ddd; 10 | .border-radius(3px); 11 | .box-shadow(inset 0 1px 0 @white); 12 | li { 13 | display: inline-block; 14 | .ie7-inline-block(); 15 | text-shadow: 0 1px 0 @white; 16 | } 17 | .divider { 18 | padding: 0 5px; 19 | color: @grayLight; 20 | } 21 | .active a { 22 | color: @grayDark; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/less/twbs-203/close.less: -------------------------------------------------------------------------------- 1 | // CLOSE ICONS 2 | // ----------- 3 | 4 | .close { 5 | float: right; 6 | font-size: 20px; 7 | font-weight: bold; 8 | line-height: @baseLineHeight; 9 | color: @black; 10 | text-shadow: 0 1px 0 rgba(255,255,255,1); 11 | .opacity(20); 12 | &:hover { 13 | color: @black; 14 | text-decoration: none; 15 | cursor: pointer; 16 | .opacity(40); 17 | } 18 | } 19 | 20 | // Additional properties for button version 21 | // iOS requires the button element instead of an anchor tag. 22 | // If you want the anchor version, it requires `href="#"`. 23 | button.close { 24 | padding: 0; 25 | cursor: pointer; 26 | background: transparent; 27 | border: 0; 28 | -webkit-appearance: none; 29 | } -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/less/twbs-203/component-animations.less: -------------------------------------------------------------------------------- 1 | // COMPONENT ANIMATIONS 2 | // -------------------- 3 | 4 | .fade { 5 | .opacity(0); 6 | .transition(opacity .15s linear); 7 | &.in { 8 | .opacity(100); 9 | } 10 | } 11 | 12 | .collapse { 13 | position: relative; 14 | height: 0; 15 | overflow: hidden; 16 | .transition(height .35s ease); 17 | &.in { 18 | height: auto; 19 | } 20 | } -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/less/twbs-203/grid.less: -------------------------------------------------------------------------------- 1 | // Fixed (940px) 2 | #grid > .core(@gridColumnWidth, @gridGutterWidth); 3 | 4 | // Fluid (940px) 5 | #grid > .fluid(@fluidGridColumnWidth, @fluidGridGutterWidth); -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/less/twbs-203/hero-unit.less: -------------------------------------------------------------------------------- 1 | // HERO UNIT 2 | // --------- 3 | 4 | .hero-unit { 5 | padding: 60px; 6 | margin-bottom: 30px; 7 | background-color: @heroUnitBackground; 8 | .border-radius(6px); 9 | h1 { 10 | margin-bottom: 0; 11 | font-size: 60px; 12 | line-height: 1; 13 | color: @heroUnitHeadingColor; 14 | letter-spacing: -1px; 15 | } 16 | p { 17 | font-size: 18px; 18 | font-weight: 200; 19 | line-height: @baseLineHeight * 1.5; 20 | color: @heroUnitLeadColor; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/less/twbs-203/layouts.less: -------------------------------------------------------------------------------- 1 | // 2 | // Layouts 3 | // Fixed-width and fluid (with sidebar) layouts 4 | // -------------------------------------------- 5 | 6 | 7 | // Container (centered, fixed-width layouts) 8 | .container { 9 | .container-fixed(); 10 | } 11 | 12 | // Fluid layouts (left aligned, with sidebar, min- & max-width content) 13 | .container-fluid { 14 | padding-right: @gridGutterWidth; 15 | padding-left: @gridGutterWidth; 16 | .clearfix(); 17 | } -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/less/twbs-203/pager.less: -------------------------------------------------------------------------------- 1 | // PAGER 2 | // ----- 3 | 4 | .pager { 5 | margin-left: 0; 6 | margin-bottom: @baseLineHeight; 7 | list-style: none; 8 | text-align: center; 9 | .clearfix(); 10 | } 11 | .pager li { 12 | display: inline; 13 | } 14 | .pager a { 15 | display: inline-block; 16 | padding: 5px 14px; 17 | background-color: #fff; 18 | border: 1px solid #ddd; 19 | .border-radius(15px); 20 | } 21 | .pager a:hover { 22 | text-decoration: none; 23 | background-color: #f5f5f5; 24 | } 25 | .pager .next a { 26 | float: right; 27 | } 28 | .pager .previous a { 29 | float: left; 30 | } 31 | .pager .disabled a, 32 | .pager .disabled a:hover { 33 | color: @grayLight; 34 | background-color: #fff; 35 | cursor: default; 36 | } -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/less/twbs-203/responsive-1200px-min.less: -------------------------------------------------------------------------------- 1 | // LARGE DESKTOP & UP 2 | // ------------------ 3 | 4 | @media (min-width: 1200px) { 5 | 6 | // Fixed grid 7 | #grid > .core(70px, 30px); 8 | 9 | // Fluid grid 10 | #grid > .fluid(5.982905983%, 2.564102564%); 11 | 12 | // Input grid 13 | #grid > .input(70px, 30px); 14 | 15 | // Thumbnails 16 | .thumbnails { 17 | margin-left: -30px; 18 | } 19 | .thumbnails > li { 20 | margin-left: 30px; 21 | } 22 | .row-fluid .thumbnails { 23 | margin-left: 0; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/less/twbs-203/responsive-768px-979px.less: -------------------------------------------------------------------------------- 1 | // PORTRAIT TABLET TO DEFAULT DESKTOP 2 | // ---------------------------------- 3 | 4 | @media (min-width: 768px) and (max-width: 979px) { 5 | 6 | // Fixed grid 7 | #grid > .core(42px, 20px); 8 | 9 | // Fluid grid 10 | #grid > .fluid(5.801104972%, 2.762430939%); 11 | 12 | // Input grid 13 | #grid > .input(42px, 20px); 14 | 15 | // No need to reset .thumbnails here since it's the same @gridGutterWidth 16 | 17 | } 18 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/less/twbs-203/scaffolding.less: -------------------------------------------------------------------------------- 1 | // Scaffolding 2 | // Basic and global styles for generating a grid system, structural layout, and page templates 3 | // ------------------------------------------------------------------------------------------- 4 | 5 | 6 | // Body reset 7 | // ---------- 8 | 9 | body { 10 | margin: 0; 11 | font-family: @baseFontFamily; 12 | font-size: @baseFontSize; 13 | line-height: @baseLineHeight; 14 | color: @textColor; 15 | background-color: @bodyBackground; 16 | } 17 | 18 | 19 | // Links 20 | // ----- 21 | 22 | a { 23 | color: @linkColor; 24 | text-decoration: none; 25 | } 26 | a:hover { 27 | color: @linkColorHover; 28 | text-decoration: underline; 29 | } 30 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/less/twbs-203/tooltip.less: -------------------------------------------------------------------------------- 1 | // TOOLTIP 2 | // ------= 3 | 4 | .tooltip { 5 | position: absolute; 6 | z-index: @zindexTooltip; 7 | display: block; 8 | visibility: visible; 9 | padding: 5px; 10 | font-size: 11px; 11 | .opacity(0); 12 | &.in { .opacity(80); } 13 | &.top { margin-top: -2px; } 14 | &.right { margin-left: 2px; } 15 | &.bottom { margin-top: 2px; } 16 | &.left { margin-left: -2px; } 17 | &.top .tooltip-arrow { #popoverArrow > .top(); } 18 | &.left .tooltip-arrow { #popoverArrow > .left(); } 19 | &.bottom .tooltip-arrow { #popoverArrow > .bottom(); } 20 | &.right .tooltip-arrow { #popoverArrow > .right(); } 21 | } 22 | .tooltip-inner { 23 | max-width: 200px; 24 | padding: 3px 8px; 25 | color: @white; 26 | text-align: center; 27 | text-decoration: none; 28 | background-color: @black; 29 | .border-radius(4px); 30 | } 31 | .tooltip-arrow { 32 | position: absolute; 33 | width: 0; 34 | height: 0; 35 | } 36 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/less/twbs-203/utilities.less: -------------------------------------------------------------------------------- 1 | // UTILITY CLASSES 2 | // --------------- 3 | 4 | // Quick floats 5 | .pull-right { 6 | float: right; 7 | } 8 | .pull-left { 9 | float: left; 10 | } 11 | 12 | // Toggling content 13 | .hide { 14 | display: none; 15 | } 16 | .show { 17 | display: block; 18 | } 19 | 20 | // Visibility 21 | .invisible { 22 | visibility: hidden; 23 | } 24 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/docs/assets/less/twbs-203/wells.less: -------------------------------------------------------------------------------- 1 | // WELLS 2 | // ----- 3 | 4 | .well { 5 | min-height: 20px; 6 | padding: 19px; 7 | margin-bottom: 20px; 8 | background-color: #f5f5f5; 9 | border: 1px solid #eee; 10 | border: 1px solid rgba(0,0,0,.05); 11 | .border-radius(4px); 12 | .box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); 13 | blockquote { 14 | border-color: #ddd; 15 | border-color: rgba(0,0,0,.15); 16 | } 17 | } 18 | 19 | // Sizes 20 | .well-large { 21 | padding: 24px; 22 | .border-radius(6px); 23 | } 24 | .well-small { 25 | padding: 9px; 26 | .border-radius(3px); 27 | } 28 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/font/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/font/fontawesome-webfont.eot -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/font/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/font/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/font/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/fontawesome/font/fontawesome-webfont.woff -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/foot.less: -------------------------------------------------------------------------------- 1 | // KICKSTRAP FOOT 2 | // ============== 3 | 4 | #caching {ie8: ""} 5 | 6 | // Process add-ons from settings. 7 | #appList { 8 | content: @apps; 9 | ie8: @apps; 10 | } 11 | 12 | #appList::after { 13 | content: @apps; 14 | } 15 | 16 | script#rootDir { 17 | content: ""; 18 | ie8: ""; 19 | } 20 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/head.less: -------------------------------------------------------------------------------- 1 | // KICKSTRAP HEAD 2 | // ================= 3 | 4 | // No cache by default. 5 | @importedJS: ""; 6 | script#caching {content: @importedJS;} 7 | 8 | .hidden {display:none;} 9 | @iconSpritePath: "./Kickstrap/bootstrap/img/glyphicons-halflings.png"; 10 | @iconWhiteSpritePath: "./Kickstrap/bootstrap/img/glyphicons-halflings-white.png"; 11 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/horizontal-lists.less: -------------------------------------------------------------------------------- 1 | // HORIZONTAL LISTS 2 | // ================ 3 | 4 | ul.ul-horizontal { 5 | list-style:none; 6 | list-style-type:none; 7 | li { 8 | display:inline; 9 | margin:0px 10px; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/icons.less: -------------------------------------------------------------------------------- 1 | // GLYPHICON OVERRIDE 2 | // ================== 3 | 4 | [class^="icon-"], 5 | [class*=" icon-"], 6 | [class^="icomoon-"], 7 | [class*=" icomoon-"] { 8 | display: inline-block; 9 | width: auto; 10 | height: auto; 11 | background-image: none; 12 | background-position: 0; 13 | background-repeat: no-repeat; 14 | line-height:normal; 15 | } 16 | .icon-white { 17 | background-image: none; 18 | } 19 | 20 | @import "fontawesome/less/font-awesome.less"; // Using awesomefont instead of an image sprite. 21 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/olcg.less: -------------------------------------------------------------------------------- 1 | // ONE LINE CSS GRID 2 | // ================= 3 | 4 | .oh,.ot,.tt{float:left;padding:0 2% 2% 0;width:48%}.ot{width:31%}.tt{width:65%}.cl{clear:both} 5 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/pretty-print.less: -------------------------------------------------------------------------------- 1 | // PRETTY PRINT 2 | // ============ 3 | 4 | .com { color: #93a1a1; } 5 | .lit { color: #195f91; } 6 | .pun, .opn, .clo { color: #93a1a1; } 7 | .fun { color: #dc322f; } 8 | .str, .atv { color: #D14; } 9 | .kwd, .linenums .tag { color: #1e347b; } 10 | .typ, .atn, .dec, .var { color: teal; } 11 | .pln { color: #48484c; } 12 | 13 | .prettyprint { 14 | padding: 8px; 15 | background-color: #f7f7f9; 16 | border: 1px solid #e1e1e8; 17 | } 18 | .prettyprint.linenums { 19 | -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 20 | -moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 21 | box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 22 | } 23 | 24 | /* Specify class=linenums on a pre to get line numbering */ 25 | ol.linenums { 26 | margin: 0 0 0 33px; /* IE indents via margin-left */ 27 | } 28 | ol.linenums li { 29 | padding-left: 12px; 30 | color: #bebec5; 31 | line-height: 18px; 32 | text-shadow: 0 1px 0 #fff; 33 | } 34 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/retina.less: -------------------------------------------------------------------------------- 1 | // RETINA CLASSES 2 | // ============== 3 | 4 | /* 5 | .hidden-hd { display: inherit !important; } 6 | .visible-hd { display: none !important; } 7 | 8 | @media all and (-webkit-min-device-pixel-ratio : 1.5) { 9 | .hidden-hd { display: none !important; } 10 | .visible-hd { display: inherit !important; } 11 | } */ 12 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/root goodies/apple-touch-icon-114x114-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/root goodies/apple-touch-icon-114x114-precomposed.png -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/root goodies/apple-touch-icon-57x57-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/root goodies/apple-touch-icon-57x57-precomposed.png -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/root goodies/apple-touch-icon-72x72-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/root goodies/apple-touch-icon-72x72-precomposed.png -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/root goodies/apple-touch-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/root goodies/apple-touch-icon-precomposed.png -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/root goodies/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/root goodies/apple-touch-icon.png -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/root goodies/crossdomain.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 19 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/root goodies/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/root goodies/favicon.ico -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/root goodies/robots.txt: -------------------------------------------------------------------------------- 1 | # www.robotstxt.org/ 2 | # http://code.google.com/web/controlcrawlindex/ 3 | 4 | User-agent: * 5 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/root goodies/whatisthis.txt: -------------------------------------------------------------------------------- 1 | Root goodies are neato files that make your website work better. You can drag them into the root of your site or just let the build script do that for you. 2 | 3 | Because these are "set and forget", Kickstrap keeps them here so you can focus on your project. However, they must be in your root to work on your site. -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/sprites.less: -------------------------------------------------------------------------------- 1 | // GLYPHICONS 2 | // ========== 3 | 4 | [class^="icon-"], 5 | [class*=" icon-"] { 6 | background-image: url('@{rootDir}Kickstrap/bootstrap/img/glyphicons-halflings.png'); 7 | } 8 | 9 | .icon-white, 10 | .nav-tabs > .active > a > [class^="icon-"], 11 | .nav-tabs > .active > a > [class*=" icon-"], 12 | .nav-pills > .active > a > [class^="icon-"], 13 | .nav-pills > .active > a > [class*=" icon-"], 14 | .nav-list > .active > a > [class^="icon-"], 15 | .nav-list > .active > a > [class*=" icon-"], 16 | .navbar-inverse .nav > .active > a > [class^="icon-"], 17 | .navbar-inverse .nav > .active > a > [class*=" icon-"], 18 | .dropdown-menu > li > a:hover > [class^="icon-"], 19 | .dropdown-menu > li > a:hover > [class*=" icon-"], 20 | .dropdown-menu > .active > a > [class^="icon-"], 21 | .dropdown-menu > .active > a > [class*=" icon-"] { 22 | background-image: url('@{rootDir}Kickstrap/bootstrap/img/glyphicons-halflings-white.png'); 23 | } 24 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/Kickstrap/extras/sticky-footer.less: -------------------------------------------------------------------------------- 1 | // STICKY FOOTER 2 | // ============= 3 | // Based on work from http://ryanfait.com/sticky-footer and http://www.cssstickyfooter.com/ 4 | 5 | @footerHeight: 3em; // Just set this and the rest is taken care of. 6 | 7 | html, body { 8 | height: 100%; 9 | } 10 | #sf-wrapper { 11 | min-height: 100%; 12 | height: auto !important; 13 | height: 100%; // For IE. 14 | } 15 | #push {height: @footerHeight;} 16 | .container.main { // Should have only one of these per page. 17 | overflow:auto; 18 | padding-bottom: @footerHeight; 19 | } 20 | footer#footer { 21 | position: relative; 22 | margin-top: -@footerHeight; 23 | height: @footerHeight; 24 | clear:both; 25 | } 26 | 27 | // Opera Fix 28 | body:before { // Thanks to Maleika (Kohoutec) 29 | content:""; 30 | height:100%; 31 | float:left; 32 | width:0; 33 | margin-top:-32767px; // Thank you Erik J - negate effect of float 34 | } 35 | 36 | html.lt-ie7 #wrap {display:table;height:100%} 37 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/css/theme.less: -------------------------------------------------------------------------------- 1 | // BEGIN THEME 2 | // ----------- 3 | 4 | @import "Kickstrap/themes/cerulean/variables.less"; 5 | @import "Kickstrap/themes/cerulean/bootswatch.less"; 6 | // Replace the path with any .less file in the 'themes' folder. 7 | 8 | // Tweak your current theme here, or comment-out the predefined theme from settings 9 | // and start fresh below. 10 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/Thumbs.db -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/about.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/about.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/banner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/banner.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/big_pic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/big_pic.jpg -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/blank.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/books/9780132350884/book_front_cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/books/9780132350884/book_front_cover.png -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/books/9780135974445/book_front_cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/books/9780135974445/book_front_cover.png -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/books/9780201485677/book_front_cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/books/9780201485677/book_front_cover.png -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/books/9780321356680/book_front_cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/books/9780321356680/book_front_cover.png -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/books/9781430209737/book_front_cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/books/9781430209737/book_front_cover.png -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/border.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/border.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/box_bottom.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/box_bottom.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/box_center.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/box_center.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/box_top.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/box_top.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/bullet1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/bullet1.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/bullet2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/bullet2.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/bullet3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/bullet3.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/bullet4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/bullet4.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/bullet5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/bullet5.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/bullet6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/bullet6.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/cart.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/cart.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/cart_thumb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/cart_thumb.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/center_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/center_bg.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/close.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/close.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/closelabel.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/closelabel.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/color1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/color1.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/color2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/color2.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/color3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/color3.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/contact_bt.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/contact_bt.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/csscreme.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/csscreme.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/de.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/de.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/footer_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/footer_bg.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/footer_logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/footer_logo.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/fr.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/fr.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/gb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/gb.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/header.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/header.jpg -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/left_menu_bullet.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/left_menu_bullet.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/loading.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/logo.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/new_icon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/new_icon.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/new_prod_box.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/new_prod_box.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/next.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/next.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/nextlabel.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/nextlabel.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/nl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/nl.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/order_now.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/order_now.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/prev.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/prev.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/prevlabel.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/prevlabel.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/prod1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/prod1.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/prod2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/prod2.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/promo_icon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/promo_icon.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/register_bt.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/register_bt.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/special_icon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/special_icon.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/thumb1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/thumb1.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/thumb2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/thumb2.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/thumb3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/thumb3.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/zoom.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/META-INF/web-resources/images/zoom.gif -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/ehcache.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 8 | 9 | 12 | 13 | 16 | 17 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 7 | 8 | 9 | 10 | 11 | bookstore.log 12 | 13 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/messages_nl.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-example-with-mvc/src/main/resources/messages_nl.properties -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/resources/views.properties: -------------------------------------------------------------------------------- 1 | index.(class)=org.springframework.web.servlet.view.JstlView 2 | index.url=/WEB-INF/views/index.jsp -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/webapp/WEB-INF/templates/footer.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 3 | <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %> 4 | 5 | 8 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/webapp/WEB-INF/tiles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/webapp/WEB-INF/views.properties: -------------------------------------------------------------------------------- 1 | index.(class)=org.springframework.web.servlet.view.JstlView 2 | index.url=/WEB-INF/views/index.jsp -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/webapp/WEB-INF/views.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/webapp/WEB-INF/views/book/detail.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | 3 | 4 | ${book.title} 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
Title${book.title}
Description${book.description}
Author${book.author}
Year${book.year}
ISBN${book.isbn}
Price${book.price}
-------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/webapp/WEB-INF/views/index.jsp: -------------------------------------------------------------------------------- 1 |

Welcome to the Book Store

-------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/webapp/WEB-INF/views/login.jsp: -------------------------------------------------------------------------------- 1 | <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | <%@taglib prefix="spring" uri="http://www.springframework.org/tags" %> 3 | 4 | 5 |
6 | 7 |
8 |
9 |
" method="post"> 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
"/>
"/>
23 |
24 |
25 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/webapp/WEB-INF/xslt/index.xslt: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | Home 9 | 10 | 11 |

Welcome!

12 | 13 |

Welcome to the Bookstore

14 | 15 | 16 |
17 |
-------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /bookstore-example-with-mvc/src/test/resources/log4j.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/java/org/hcl/test/repository/BookRepository.java: -------------------------------------------------------------------------------- 1 | package org.hcl.test.repository; 2 | 3 | import org.hcl.test.model.Book; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository("bookRepository") 8 | public interface BookRepository extends JpaRepository { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/java/org/hcl/test/repository/CategoryRepository.java: -------------------------------------------------------------------------------- 1 | package org.hcl.test.repository; 2 | 3 | import org.hcl.test.model.Category; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository("categoryRepository") 8 | public interface CategoryRepository extends JpaRepository { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/java/org/hcl/test/repository/OrderDetailsRepository.java: -------------------------------------------------------------------------------- 1 | package org.hcl.test.repository; 2 | 3 | import java.util.List; 4 | 5 | import org.hcl.test.model.OrderDetails; 6 | import org.springframework.data.jpa.repository.JpaRepository; 7 | import org.springframework.data.jpa.repository.Query; 8 | import org.springframework.data.repository.query.Param; 9 | import org.springframework.stereotype.Repository; 10 | 11 | @Repository("orderDetailsRepository") 12 | public interface OrderDetailsRepository extends JpaRepository { 13 | 14 | @Query("SELECT o FROM OrderDetails o WHERE o.ordersId=:oId") 15 | List getOrderDetails(@Param("oId") int oId); 16 | 17 | @Query("SELECT o FROM OrderDetails o WHERE o.ordersId=:oId and o.bookId=:bId") 18 | List getBookInCart(@Param("oId") int oId, @Param("bId") int bId); 19 | } 20 | -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/java/org/hcl/test/repository/OrdersRepository.java: -------------------------------------------------------------------------------- 1 | package org.hcl.test.repository; 2 | 3 | import org.hcl.test.model.Orders; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.data.jpa.repository.Modifying; 6 | import org.springframework.data.jpa.repository.Query; 7 | import org.springframework.data.repository.query.Param; 8 | import org.springframework.stereotype.Repository; 9 | import org.springframework.transaction.annotation.Transactional; 10 | 11 | @Repository("ordersRepository") 12 | public interface OrdersRepository extends JpaRepository { 13 | 14 | @Query("SELECT o FROM Orders o WHERE o.accountId=:uId and o.isInCart=true") 15 | Orders getCart(@Param("uId") int userId); 16 | 17 | @Modifying 18 | @Transactional 19 | @Query("update Orders o set o.isInCart=false where o.accountId=:uId") 20 | void checkoutCart(@Param("uId") int userId); 21 | } 22 | -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/resources/META-INF/reverse-persistence.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | org.apache.openjpa.persistence.PersistenceProviderImpl 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.datasource.url=jdbc:postgresql://localhost:5432/pg 2 | spring.datasource.username=postgres 3 | spring.datasource.password=password 4 | spring.datasource.driver-class-name=org.postgresql.Driver -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/resources/static/app.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular.module('appDoCFD', ['ui.router', 'ngSanitize', 'ui.bootstrap', 'ngTagsInput', 'angularTreeview', 'dynform', 'ngGrid','jsonFormatter']) 4 | 5 | .value('masterDataURL', '') 6 | .config(['$stateProvider','$urlRouterProvider', 7 | function($stateProvider, $urlRouterProvider) { 8 | 9 | $urlRouterProvider.otherwise('/bookecom'); 10 | $urlRouterProvider.when('/bookecom', '/bookecom/listBooks'); 11 | 12 | $stateProvider 13 | 14 | .state('bookecom', { 15 | url:'/bookecom', 16 | controller:'masterDataCtrl', 17 | templateUrl:'views/navigation/bookecom.html' 18 | }) 19 | .state('bookecom.listBooks', { 20 | url: '/listBooks', 21 | controller:'listBooksCtrl', 22 | templateUrl: 'views/navigation/bookecom-listBooks.html' 23 | }) 24 | .state('bookecom.checkout', { 25 | url: '/checkout', 26 | controller:'checkoutCtrl', 27 | templateUrl: 'views/navigation/bookecom-checkout.html' 28 | }) 29 | }]); 30 | -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/resources/static/assets/img/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-spring-boot/src/main/resources/static/assets/img/ajax-loader.gif -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/resources/static/assets/img/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-spring-boot/src/main/resources/static/assets/img/file.png -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/resources/static/assets/img/folder-closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-spring-boot/src/main/resources/static/assets/img/folder-closed.png -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/resources/static/assets/img/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-spring-boot/src/main/resources/static/assets/img/folder.png -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/resources/static/controllers/mainCtrl.controllers.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular.module('appDoCFD') 4 | 5 | 6 | .controller('mainCtrl', function($scope, $rootScope, saveFormDataSvc, masterDataAPI){ 7 | 8 | //Data objects inherited across plan/setup/execute pages 9 | $scope.plan = {}; 10 | $scope.setup = {}; 11 | $scope.execute = {}; 12 | 13 | //tags 14 | $scope.addToArray = function (evt, value, array) { 15 | 16 | if(evt.keyCode == 13){ 17 | 18 | var v = evt.target.value; 19 | if(v != undefined && v != ""){ 20 | array.push({"value" : v}); 21 | } 22 | 23 | 24 | console.log(array); 25 | evt.target.value = ""; 26 | } 27 | } 28 | 29 | 30 | $scope.delFromArray = function (index, array) { 31 | console.log(array); 32 | array.splice(index, 1); 33 | console.log(array); 34 | 35 | } 36 | 37 | $scope.save = function (form) { 38 | //Generic save for the plan pages 39 | saveFormDataSvc.saveData($scope, form, $scope.plan); 40 | console.log("Saved Data: "+JSON.stringify(saveFormDataSvc.getData())); 41 | } 42 | 43 | }); -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/resources/static/controllers/masterData.controllers.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular.module('appDoCFD') 4 | 5 | .controller('masterDataCtrl', ['$scope', '$rootScope', 'masterDataAPI', 'saveFormDataSvc' , 6 | function($scope, $rootScope, masterDataAPI, saveFormDataSvc) { 7 | 8 | }]); 9 | -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/resources/static/demo/app.js: -------------------------------------------------------------------------------- 1 | angular.module('app', ['dynform']) 2 | .controller('AppCtrl', ['$scope', function ($scope) { 3 | $scope.urlFormData = {}; // JavaScript needs an object to put our form's models into. 4 | 5 | $scope.processForm = function () { 6 | alert ($scope.urlFormData.MACH_NUMBER); 7 | }; 8 | 9 | }]) 10 | .filter('nl2br', function() { 11 | return function (input) { 12 | var temp; 13 | try { 14 | temp = angular.fromJson(input); 15 | } 16 | catch (e) { 17 | temp = input; 18 | } 19 | 20 | return angular.toJson(temp, true); 21 | }; 22 | }); 23 | -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/resources/static/directives/commitableValue.directive.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular.module('appDoCFD') 4 | 5 | .directive('commitableValue', function(){ 6 | return { 7 | scope: true, 8 | require: 'ngModel', 9 | link: function($scope, $elm, $attrs, ngModel) { 10 | //ngModel.$setViewValue('hi'); 11 | } 12 | } 13 | 14 | }); 15 | -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/resources/static/directives/headerbar.directive.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular.module('appDoCFD') 4 | 5 | .directive('doCfdHeaderBar', function() { 6 | return { 7 | restrict: 'E', 8 | scope: { 9 | selected: '@selected' 10 | }, 11 | link: function(scope, element, attrs) { 12 | 13 | }, 14 | templateUrl: 'views/headerbar/headerbar.html' 15 | } 16 | }); -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/resources/static/directives/listentry.directive.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular.module('appDoCFD') 4 | 5 | .directive('flkaListEntry', function() { 6 | return { 7 | restrict: 'E', 8 | scope: { 9 | entryIndex: '@', 10 | postTitle: '@', 11 | published: '@', 12 | author: '@', 13 | authorId: '@', 14 | thumb: '@', 15 | flickrLink: '@' 16 | }, 17 | link: function(scope, element, attrs) { 18 | 19 | }, 20 | templateUrl: 'views/listentry/listentry.html' 21 | } 22 | }); -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/resources/static/directives/planNavi.directive.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular.module('appDoCFD') 4 | 5 | .directive('doCfdPlanNavi', function() { 6 | return { 7 | restrict: 'E', 8 | scope: { 9 | selected: '@selected' 10 | }, 11 | link: function(scope, element, attrs) { 12 | 13 | }, 14 | templateUrl: 'views/navigation/planNavi.html' 15 | } 16 | }); -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/resources/static/libraries/angular/js/angular-cookies.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | AngularJS v1.2.16 3 | (c) 2010-2014 Google, Inc. http://angularjs.org 4 | License: MIT 5 | */ 6 | (function(p,f,n){'use strict';f.module("ngCookies",["ng"]).factory("$cookies",["$rootScope","$browser",function(e,b){var c={},g={},h,k=!1,l=f.copy,m=f.isUndefined;b.addPollFn(function(){var a=b.cookies();h!=a&&(h=a,l(a,g),l(a,c),k&&e.$apply())})();k=!0;e.$watch(function(){var a,d,e;for(a in g)m(c[a])&&b.cookies(a,n);for(a in c)d=c[a],f.isString(d)||(d=""+d,c[a]=d),d!==g[a]&&(b.cookies(a,d),e=!0);if(e)for(a in d=b.cookies(),c)c[a]!==d[a]&&(m(d[a])?delete c[a]:c[a]=d[a])});return c}]).factory("$cookieStore", 7 | ["$cookies",function(e){return{get:function(b){return(b=e[b])?f.fromJson(b):b},put:function(b,c){e[b]=f.toJson(c)},remove:function(b){delete e[b]}}}])})(window,window.angular); 8 | //# sourceMappingURL=angular-cookies.min.js.map 9 | -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/resources/static/libraries/angular/js/angular-csp.css: -------------------------------------------------------------------------------- 1 | /* Include this file in your html if you are using the CSP mode. */ 2 | 3 | @charset "UTF-8"; 4 | 5 | [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], 6 | .ng-cloak, .x-ng-cloak, 7 | .ng-hide { 8 | display: none !important; 9 | } 10 | 11 | ng\:form { 12 | display: block; 13 | } 14 | 15 | .ng-animate-block-transitions { 16 | transition:0s all!important; 17 | -webkit-transition:0s all!important; 18 | } 19 | -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/resources/static/libraries/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-spring-boot/src/main/resources/static/libraries/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/resources/static/libraries/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-spring-boot/src/main/resources/static/libraries/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/resources/static/libraries/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/bookstore-spring-boot/src/main/resources/static/libraries/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/resources/static/services/masterDataApi.service.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular.module('appDoCFD') 4 | 5 | .factory('masterDataAPI', ['$q', '$http', 'masterDataURL', function($q, $http, masterDataURL) { 6 | return new function() { 7 | 8 | this.getData = function() { 9 | var deferred = $q.defer(); 10 | 11 | $http.get(masterDataURL). 12 | success(function(data, status, headers, config) { 13 | deferred.resolve(data); 14 | }). 15 | error(function(data, status, headers, config) { 16 | deferred.reject([data,status,headers,config]); 17 | }); 18 | 19 | return deferred.promise; 20 | } 21 | 22 | }; 23 | }]); -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/resources/static/services/saveFormData.service.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular.module('appDoCFD') 4 | 5 | .factory('saveFormDataSvc', function(){ 6 | 7 | //The data store to be sent to server 8 | var boeingData = {}; 9 | var isDataSaved = false; 10 | 11 | return { 12 | 13 | 14 | getData: function(){ 15 | return boeingData; 16 | }, 17 | 18 | saveData: function ($scope, form, dataToBeSaved) { 19 | console.log('dataToBeSaved: '+JSON.stringify(dataToBeSaved)); 20 | 21 | $scope.$broadcast('show-errors-check-validity'); 22 | 23 | if(form.$invalid){ 24 | console.log("No new data saved. Form invalid: "+form.$name); 25 | return; 26 | }else{ 27 | boeingData = dataToBeSaved; 28 | isDataSaved = true; 29 | //console.log(boeingData); 30 | //console.log("Stored Data: "+JSON.stringify(boeingData)); 31 | } 32 | }, 33 | 34 | resetData: function() { 35 | boeingData = {}; 36 | }, 37 | 38 | postData: function (data) { 39 | $http.post('someUrl', JSON.stringify(data)).success(function(){ 40 | console.log(data); 41 | }); 42 | } 43 | 44 | }; 45 | }); -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/resources/static/views/generic/error.html: -------------------------------------------------------------------------------- 1 |

2 | {{vm}} 3 |

-------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/resources/static/views/headerbar/headerbar.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/resources/static/views/home/home.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 11 | 12 |

The home Page

13 | 14 | 15 | 16 |
17 | 18 |
-------------------------------------------------------------------------------- /bookstore-spring-boot/src/main/resources/static/views/listentry/listentry.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 |

{{ postTitle }}

6 | 7 |

Published: {{ published | date : "medium" }}

8 |

Photo author 12 | ( View on Flickr )

13 | 14 |
-------------------------------------------------------------------------------- /bookstore-spring-boot/src/test/java/org/hcl/test/UiApplicationTests.java: -------------------------------------------------------------------------------- 1 | package org.hcl.test; 2 | 3 | import org.junit.Test; 4 | import org.junit.runner.RunWith; 5 | import org.springframework.test.context.web.WebAppConfiguration; 6 | import org.springframework.boot.test.SpringApplicationConfiguration; 7 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 8 | 9 | @RunWith(SpringJUnit4ClassRunner.class) 10 | @SpringApplicationConfiguration(classes = UiApplication.class) 11 | @WebAppConfiguration 12 | public class UiApplicationTests { 13 | 14 | @Test 15 | public void contextLoads() { 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /bookstore-spring-boot/src/test/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.datasource.url=jdbc:h2:mem:AZ;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE 2 | spring.datasource.driverClassName=org.h2.Driver 3 | spring.datasource.username=sa 4 | spring.datasource.password= 5 | spring.jpa.database-platform=org.hibernate.dialect.H2Dialect -------------------------------------------------------------------------------- /bookstore-spring-boot/src/test/resources/datasets/cart.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /bookstore-spring-boot/src/test/resources/datasets/it-categories.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /spring_boot_form_builder/architecture_diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/spring_boot_form_builder/architecture_diagram.png -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_h2_services/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | /.settings 3 | /logs_and_files 4 | /war 5 | .classpath 6 | .project 7 | /.sonar 8 | .springBeans -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_h2_services/src/main/java/com/formbuilder/UiFormDao.java: -------------------------------------------------------------------------------- 1 | package com.formbuilder; 2 | 3 | import java.sql.SQLException; 4 | import java.text.ParseException; 5 | import java.util.List; 6 | import java.util.Map; 7 | 8 | import org.json.simple.JSONObject; 9 | 10 | import com.formbuilder.dto.RuleValidationOutcome; 11 | import com.formbuilder.dto.UiForm; 12 | import com.formbuilder.dto.UiFormLink; 13 | 14 | public interface UiFormDao { 15 | 16 | public abstract List getFormList(String appName); 17 | 18 | public abstract Map getFormData(String appName, int dataId, UiForm form, List formLinks) throws SQLException; 19 | 20 | public abstract UiForm getFormInfo(String appName, int formId); 21 | 22 | public abstract List getFormLinkInfo(String appName, int formId); 23 | 24 | public abstract List getFormDataList(String appName, int formId); 25 | 26 | public abstract int saveFormData(String appName, int formId,int dataId, JSONObject input) throws ParseException, SQLException; 27 | 28 | public int deleteRow(String appName, int rowId,int formId) throws SQLException; 29 | 30 | public abstract String getApplicationDisplayName(String appName); 31 | 32 | } -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_h2_services/src/main/java/com/formbuilder/UiRuleRepository.java: -------------------------------------------------------------------------------- 1 | package com.formbuilder; 2 | 3 | import org.springframework.data.jpa.repository.Query; 4 | import org.springframework.data.repository.CrudRepository; 5 | 6 | import com.formbuilder.dto.UiRule; 7 | 8 | 9 | public interface UiRuleRepository extends CrudRepository { 10 | 11 | @Query(value = "select * from uiRules where uiRuleId=?0", nativeQuery=true) 12 | UiRule findRule(String uiRuleId); 13 | } 14 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_h2_services/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | #spring.jpa.database=authority_admin1 2 | #spring.jpa.show-sql=true 3 | #spring.database.driverClassName=org.postgresql.Driver 4 | #spring.datasource.url=jdbc:postgresql://localhost:5432/authority_admin1 5 | #spring.datasource.username=postgres 6 | #spring.datasource.password=pass 7 | 8 | spring.datasource.url=jdbc:h2:mem:AZ;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE 9 | spring.datasource.driverClassName=org.h2.Driver 10 | spring.datasource.username=sa 11 | spring.datasource.password= -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_lib/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | /.settings 3 | /logs_and_files 4 | /war 5 | .classpath 6 | .project 7 | /.sonar 8 | .springBeans 9 | /target/ 10 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_lib/src/main/java/com/formbuilder/dto/ColumnDTO.java: -------------------------------------------------------------------------------- 1 | package com.formbuilder.dto; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class ColumnDTO { 7 | 8 | private final String columnName; 9 | private final int columnType; 10 | } 11 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_lib/src/main/java/com/formbuilder/dto/FormInformation.java: -------------------------------------------------------------------------------- 1 | package com.formbuilder.dto; 2 | 3 | import java.util.List; 4 | 5 | import lombok.Data; 6 | 7 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 8 | 9 | @JsonIgnoreProperties(ignoreUnknown = true) 10 | @Data 11 | public class FormInformation { 12 | 13 | private String id; 14 | private String type; 15 | private String application; 16 | private Node rootnode; 17 | private String entryType; 18 | private List ruleDetails; 19 | } 20 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_lib/src/main/java/com/formbuilder/dto/ListInformation.java: -------------------------------------------------------------------------------- 1 | package com.formbuilder.dto; 2 | 3 | import lombok.Data; 4 | import lombok.Getter; 5 | 6 | @Data 7 | public class ListInformation { 8 | private final String id; 9 | 10 | private final String name; 11 | } 12 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_lib/src/main/java/com/formbuilder/dto/NameValue.java: -------------------------------------------------------------------------------- 1 | package com.formbuilder.dto; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class NameValue { 7 | private String name; 8 | private String value; 9 | 10 | } 11 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_lib/src/main/java/com/formbuilder/dto/Node.java: -------------------------------------------------------------------------------- 1 | package com.formbuilder.dto; 2 | 3 | import java.util.List; 4 | 5 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 6 | 7 | import lombok.Data; 8 | 9 | @JsonIgnoreProperties(ignoreUnknown = true) 10 | @Data 11 | public class Node { 12 | private String datatype; 13 | private String id; 14 | private String label; 15 | private int lowerbound; 16 | private int upperbound; 17 | private String val; 18 | private List children; 19 | } 20 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_lib/src/main/java/com/formbuilder/dto/QuickFormInformation.java: -------------------------------------------------------------------------------- 1 | package com.formbuilder.dto; 2 | 3 | import java.util.List; 4 | 5 | import lombok.Data; 6 | 7 | @Data 8 | public class QuickFormInformation { 9 | private String applicationName; 10 | private List tableDetails; 11 | private List uiRules; 12 | } 13 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_lib/src/main/java/com/formbuilder/dto/RuleValidationOutcome.java: -------------------------------------------------------------------------------- 1 | package com.formbuilder.dto; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class RuleValidationOutcome { 7 | private final String outcome; 8 | private final String errorDetails; 9 | } 10 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_lib/src/main/java/com/formbuilder/dto/TableDetail.java: -------------------------------------------------------------------------------- 1 | package com.formbuilder.dto; 2 | 3 | import java.util.List; 4 | 5 | import lombok.Data; 6 | 7 | @Data 8 | public class TableDetail { 9 | private String columnNames; 10 | private List columnDisplayNames; 11 | private String relationshipNames; 12 | private List relationshipDisplayNames; 13 | private List relationshipType; 14 | private List ruleDetails; 15 | private String tableName; 16 | private String tableType; 17 | } 18 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_lib/src/main/java/com/formbuilder/dto/UiForm.java: -------------------------------------------------------------------------------- 1 | package com.formbuilder.dto; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class UiForm { 7 | private final String id; 8 | 9 | private final String formTableName; 10 | 11 | private final String displayName; 12 | 13 | private final int orderBy; 14 | 15 | private final String nameColumnDisplayName; 16 | 17 | private final String groupBy; 18 | 19 | private final String validator; 20 | 21 | private final String validatorInputs; 22 | } 23 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_lib/src/main/java/com/formbuilder/dto/UiFormLink.java: -------------------------------------------------------------------------------- 1 | package com.formbuilder.dto; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class UiFormLink { 7 | public final int uiFormId; 8 | 9 | public final int uiFormLinkId; 10 | 11 | public final String linkName; 12 | 13 | public final Boolean singleSelect; 14 | } 15 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_lib/src/main/java/com/formbuilder/dto/UiRule.java: -------------------------------------------------------------------------------- 1 | package com.formbuilder.dto; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class UiRule { 7 | 8 | private String id; 9 | private String uiRuleId; 10 | private String rule; 11 | } 12 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_lib/src/main/java/com/formbuilder/rule/AssertIfAllPresentRule.java: -------------------------------------------------------------------------------- 1 | package com.formbuilder.rule; 2 | 3 | import org.json.simple.JSONObject; 4 | 5 | public class AssertIfAllPresentRule extends Rule implements Evaluator{ 6 | 7 | @Override 8 | public String computeDroolsRule() { 9 | //String inputConditions = generateConditions(formInputForDrool); 10 | return String.format(droolString, nameListToValidate); 11 | } 12 | 13 | @Override 14 | public boolean eval() { 15 | int count = 0; 16 | 17 | String[] names = nameListToValidate.split(","); 18 | for (String name : names) { 19 | if (data.get(name.trim()) != null && !data.get(name.trim()).isEmpty()) { 20 | count++; 21 | } 22 | } 23 | 24 | System.out.println("count=" + count); 25 | return count == names.length; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_lib/src/main/java/com/formbuilder/rule/AssertIfOneIsPresentRule.java: -------------------------------------------------------------------------------- 1 | package com.formbuilder.rule; 2 | 3 | import org.json.simple.JSONObject; 4 | 5 | public class AssertIfOneIsPresentRule extends Rule implements Evaluator{ 6 | 7 | @Override 8 | public String computeDroolsRule() { 9 | //String inputConditions = generateConditions(formInputForDrool); 10 | return String.format(droolString, nameListToValidate); 11 | } 12 | 13 | @Override 14 | public boolean eval() { 15 | int count = 0; 16 | 17 | String[] names = nameListToValidate.split(","); 18 | for (String name : names) { 19 | if (data.get(name.trim()) != null && !data.get(name.trim()).isEmpty()) { 20 | count++; 21 | } 22 | } 23 | 24 | System.out.println("count=" + count); 25 | return count < 2; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_lib/src/main/java/com/formbuilder/rule/Evaluator.java: -------------------------------------------------------------------------------- 1 | package com.formbuilder.rule; 2 | 3 | public interface Evaluator { 4 | public boolean eval(); 5 | } 6 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_lib/src/main/java/com/formbuilder/rule/Rule.java: -------------------------------------------------------------------------------- 1 | package com.formbuilder.rule; 2 | 3 | import java.util.Map; 4 | 5 | import org.json.simple.JSONObject; 6 | 7 | import lombok.Getter; 8 | import lombok.Setter; 9 | 10 | public abstract class Rule { 11 | @Getter @Setter 12 | protected String droolString; 13 | //@Getter @Setter 14 | //protected String formInputForDrool; 15 | @Getter @Setter 16 | protected Map data; 17 | @Getter @Setter 18 | protected String nameListToValidate; 19 | 20 | public abstract String computeDroolsRule() ; 21 | } 22 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_mongo_services/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | /.settings 3 | /logs_and_files 4 | /war 5 | .classpath 6 | .project 7 | /.sonar 8 | .springBeans -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_mongo_services/src/main/java/com/formbuilder/UiRuleRepository.java: -------------------------------------------------------------------------------- 1 | package com.formbuilder; 2 | 3 | import org.springframework.data.mongodb.repository.MongoRepository; 4 | import org.springframework.data.mongodb.repository.Query; 5 | 6 | import com.formbuilder.dto.UiRule; 7 | 8 | 9 | public interface UiRuleRepository extends MongoRepository { 10 | 11 | @Query(value = "{\"uiRuleId\": ?0}") 12 | UiRule findRule(String uiRuleId); 13 | } 14 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_mongo_services/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.data.mongodb.uri=mongodb://localhost/cg_mongo_dev 2 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_mongo_services/src/test/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.data.mongodb.uri=mongodb://localhost/formdb-test 2 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_parent/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | /.settings 3 | /logs_and_files 4 | /war 5 | .classpath 6 | .project 7 | /.sonar 8 | .springBeans -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_parent/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/spring_boot_form_builder/formbuilder_parent/README.md -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_parent/edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/spring_boot_form_builder/formbuilder_parent/edit.png -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_parent/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | com.formbuilder 6 | formbuilder_parent 7 | pom 8 | 0.1 9 | 10 | Form Builder Parent 11 | 12 | 13 | ../formbuilder_lib 14 | ../formbuilder_h2_services 15 | ../formbuilder_mongo_services 16 | ../formbuilder_ui 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_parent/read.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/spring_boot_form_builder/formbuilder_parent/read.png -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_ui/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | /.settings 3 | /logs_and_files 4 | /war 5 | .classpath 6 | .project 7 | /.sonar 8 | .springBeans -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_ui/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/spring_boot_form_builder/formbuilder_ui/README.md -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_ui/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | logging.level.com.formbuilder=DEBUG -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_ui/src/main/webapp/assets/img/Dynforms-Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/spring_boot_form_builder/formbuilder_ui/src/main/webapp/assets/img/Dynforms-Logo.png -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_ui/src/main/webapp/assets/img/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/spring_boot_form_builder/formbuilder_ui/src/main/webapp/assets/img/ajax-loader.gif -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_ui/src/main/webapp/assets/img/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/spring_boot_form_builder/formbuilder_ui/src/main/webapp/assets/img/file.png -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_ui/src/main/webapp/assets/img/folder-closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/spring_boot_form_builder/formbuilder_ui/src/main/webapp/assets/img/folder-closed.png -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_ui/src/main/webapp/assets/img/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/spring_boot_form_builder/formbuilder_ui/src/main/webapp/assets/img/folder.png -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_ui/src/main/webapp/controllers/formdatapreview.controllers.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular.module('appDynApp') 4 | 5 | .controller('designOfFormPreviewCtrl', ['$http', '$scope', '$location','$window', function ($http, $scope, $location,$window) { 6 | 7 | if($location.search().formid != undefined){ 8 | //alert($location.search().formid); 9 | $scope.formid = $location.search().formid; 10 | } 11 | if($location.search().app_name != undefined){ 12 | $scope.app_name = $location.search().app_name; 13 | } 14 | 15 | $scope.urlFormData = {}; // JavaScript needs an object to put our form's models into. 16 | 17 | }]) 18 | .filter('pretty', function() { 19 | return function (input) { 20 | var temp; 21 | try { 22 | temp = angular.fromJson(input); 23 | } 24 | catch (e) { 25 | temp = input; 26 | } 27 | 28 | return angular.toJson(temp, true); 29 | }; 30 | }); 31 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_ui/src/main/webapp/controllers/mainCtrl.controllers.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular.module('appDynApp') 4 | 5 | 6 | .controller('mainCtrl', function($scope, $rootScope){ 7 | 8 | //Data objects inherited across plan/setup/execute pages 9 | $scope.plan = {}; 10 | $scope.setup = {}; 11 | $scope.execute = {}; 12 | 13 | //tags 14 | $scope.addToArray = function (evt, value, array) { 15 | 16 | if(evt.keyCode == 13){ 17 | 18 | var v = evt.target.value; 19 | if(v != undefined && v != ""){ 20 | array.push({"value" : v}); 21 | } 22 | 23 | 24 | console.log(array); 25 | evt.target.value = ""; 26 | } 27 | } 28 | 29 | 30 | $scope.delFromArray = function (index, array) { 31 | console.log(array); 32 | array.splice(index, 1); 33 | console.log(array); 34 | 35 | } 36 | 37 | $scope.save = function (form) { 38 | //Generic save for the plan pages 39 | } 40 | 41 | }); -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_ui/src/main/webapp/libraries/angular/js/angular-cookies.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | AngularJS v1.2.16 3 | (c) 2010-2014 Google, Inc. http://angularjs.org 4 | License: MIT 5 | */ 6 | (function(p,f,n){'use strict';f.module("ngCookies",["ng"]).factory("$cookies",["$rootScope","$browser",function(e,b){var c={},g={},h,k=!1,l=f.copy,m=f.isUndefined;b.addPollFn(function(){var a=b.cookies();h!=a&&(h=a,l(a,g),l(a,c),k&&e.$apply())})();k=!0;e.$watch(function(){var a,d,e;for(a in g)m(c[a])&&b.cookies(a,n);for(a in c)d=c[a],f.isString(d)||(d=""+d,c[a]=d),d!==g[a]&&(b.cookies(a,d),e=!0);if(e)for(a in d=b.cookies(),c)c[a]!==d[a]&&(m(d[a])?delete c[a]:c[a]=d[a])});return c}]).factory("$cookieStore", 7 | ["$cookies",function(e){return{get:function(b){return(b=e[b])?f.fromJson(b):b},put:function(b,c){e[b]=f.toJson(c)},remove:function(b){delete e[b]}}}])})(window,window.angular); 8 | //# sourceMappingURL=angular-cookies.min.js.map 9 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_ui/src/main/webapp/libraries/angular/js/angular-csp.css: -------------------------------------------------------------------------------- 1 | /* Include this file in your html if you are using the CSP mode. */ 2 | 3 | @charset "UTF-8"; 4 | 5 | [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], 6 | .ng-cloak, .x-ng-cloak, 7 | .ng-hide { 8 | display: none !important; 9 | } 10 | 11 | ng\:form { 12 | display: block; 13 | } 14 | 15 | .ng-animate-block-transitions { 16 | transition:0s all!important; 17 | -webkit-transition:0s all!important; 18 | } 19 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_ui/src/main/webapp/libraries/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/spring_boot_form_builder/formbuilder_ui/src/main/webapp/libraries/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_ui/src/main/webapp/libraries/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/spring_boot_form_builder/formbuilder_ui/src/main/webapp/libraries/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_ui/src/main/webapp/libraries/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skprasadu/spring-mvc-examples/2eb9c26b036aecded6e4be5099fa40bbf76f38a5/spring_boot_form_builder/formbuilder_ui/src/main/webapp/libraries/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_ui/src/main/webapp/views/generic/error.html: -------------------------------------------------------------------------------- 1 |

2 | {{vm}} 3 |

-------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_ui/src/main/webapp/views/home/home.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 11 | 12 |

The home Page

13 | 14 | 15 | 16 |
17 | 18 |
-------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_ui/src/main/webapp/views/listentry/listentry.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 |

{{ postTitle }}

6 | 7 |

Published: {{ published | date : "medium" }}

8 |

Photo author 12 | ( View on Flickr )

13 | 14 |
-------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_ui/src/main/webapp/views/navigation/formbuilder-previewFormData.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | 5 |
6 |
7 |
8 |
Json : {{urlFormData | pretty}}
9 |
10 |
11 |
12 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_ui/src/main/webapp/views/navigation/formbuilder-quickDesignOfFormsCreate.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | 5 |
6 |
7 |
8 |
Json : {{urlFormData | pretty}}
9 |
10 |
11 |
-------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_ui/src/main/webapp/views/navigation/formbuilder-renderFormData.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | 5 | 6 |
7 |
8 |
9 |
Json : {{urlFormData | pretty}}
10 |
11 |
12 |
13 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_ui/src/test/java/com/formbuilder/drools/Message.java: -------------------------------------------------------------------------------- 1 | package com.formbuilder.drools; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class Message { 7 | 8 | public String type; 9 | } 10 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_ui/src/test/java/com/formbuilder/h2/H2FormsTemplateServiceTest.java: -------------------------------------------------------------------------------- 1 | package com.formbuilder.h2; 2 | 3 | import static org.junit.Assert.assertEquals; 4 | import static org.junit.Assert.assertNotNull; 5 | 6 | import java.io.IOException; 7 | import java.util.List; 8 | import java.util.Map; 9 | 10 | import org.junit.Before; 11 | import org.junit.Test; 12 | import org.junit.runner.RunWith; 13 | import org.springframework.beans.factory.annotation.Autowired; 14 | import org.springframework.boot.test.SpringApplicationConfiguration; 15 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 16 | 17 | import com.formbuilder.Application; 18 | import com.formbuilder.FormInformationService; 19 | 20 | @RunWith(SpringJUnit4ClassRunner.class) 21 | @SpringApplicationConfiguration(classes = Application.class) 22 | public class H2FormsTemplateServiceTest { 23 | 24 | @Autowired 25 | FormInformationService formsService; 26 | 27 | @Before 28 | public void init() throws IOException { 29 | assertNotNull(formsService); 30 | } 31 | 32 | @Test 33 | public void findAllTemplates() throws Exception { 34 | List list = formsService.findAllFormTemplates(""); 35 | assertEquals(2, list.size()); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_ui/src/test/resources/META-INF/kmodule.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_ui/src/test/resources/application.properties: -------------------------------------------------------------------------------- 1 | logging.level.com.formbuilder=DEBUG -------------------------------------------------------------------------------- /spring_boot_form_builder/formbuilder_ui/src/test/resources/com/formbuilder/drools/citizenship.drl: -------------------------------------------------------------------------------- 1 | package com.formbuilder.drools 2 | 3 | import java.util.Map 4 | import java.util.List 5 | 6 | rule "citizenship date assert" when 7 | $map: Map(this["citizenship_date"].equals('')) 8 | $list: List() 9 | then 10 | $list.add("Date cannot be empty"); 11 | end 12 | 13 | rule "country is US" when 14 | $map: Map(this["country"] != null && this["country"].equals('US') ) 15 | $list: List() 16 | then 17 | $list.add("Date can be empty if US"); 18 | end 19 | --------------------------------------------------------------------------------