springmvc-scaffold 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.travis.yml +7 -0
  4. data/Gemfile +4 -0
  5. data/Gemfile.lock +45 -0
  6. data/README.markdown +31 -0
  7. data/Rakefile +9 -0
  8. data/bin/springmvc +7 -0
  9. data/lib/springmvc-scaffold.rb +14 -0
  10. data/lib/springmvc-scaffold/configuration.rb +50 -0
  11. data/lib/springmvc-scaffold/execution.rb +20 -0
  12. data/lib/springmvc-scaffold/generators/app/app_generator.rb +123 -0
  13. data/lib/springmvc-scaffold/generators/app/dependencies.rb +26 -0
  14. data/lib/springmvc-scaffold/generators/app/dependency.rb +15 -0
  15. data/lib/springmvc-scaffold/generators/app/templates/build.gradle.erb +56 -0
  16. data/lib/springmvc-scaffold/generators/app/templates/models/Entity.erb +46 -0
  17. data/lib/springmvc-scaffold/generators/app/templates/orm/Repository-hibernate.java.tt +51 -0
  18. data/lib/springmvc-scaffold/generators/app/templates/orm/Repository-jpa.java.tt +49 -0
  19. data/lib/springmvc-scaffold/generators/app/templates/pom.erb +95 -0
  20. data/lib/springmvc-scaffold/generators/app/templates/resources/hibernate.properties +16 -0
  21. data/lib/springmvc-scaffold/generators/app/templates/resources/log4j.properties +4 -0
  22. data/lib/springmvc-scaffold/generators/app/templates/resources/messages.properties +0 -0
  23. data/lib/springmvc-scaffold/generators/app/templates/springmvc-scaffold.erb +6 -0
  24. data/lib/springmvc-scaffold/generators/app/templates/webapp/.bowerrc +3 -0
  25. data/lib/springmvc-scaffold/generators/app/templates/webapp/WEB-INF/jsp/decorators/main.jsp +15 -0
  26. data/lib/springmvc-scaffold/generators/app/templates/webapp/WEB-INF/jsp/prelude.jspf +4 -0
  27. data/lib/springmvc-scaffold/generators/app/templates/webapp/WEB-INF/sitemesh3.xml +3 -0
  28. data/lib/springmvc-scaffold/generators/app/templates/webapp/WEB-INF/spring-servlet.xml.tt +42 -0
  29. data/lib/springmvc-scaffold/generators/app/templates/webapp/WEB-INF/web.xml.tt +52 -0
  30. data/lib/springmvc-scaffold/generators/app/templates/webapp/bower.json.tt +7 -0
  31. data/lib/springmvc-scaffold/generators/app/templates/webapp/stylesheets/application.css +38 -0
  32. data/lib/springmvc-scaffold/generators/base.rb +17 -0
  33. data/lib/springmvc-scaffold/generators/scaffold/attribute.rb +68 -0
  34. data/lib/springmvc-scaffold/generators/scaffold/base_scaffold.rb +54 -0
  35. data/lib/springmvc-scaffold/generators/scaffold/controller/controller_generator.rb +20 -0
  36. data/lib/springmvc-scaffold/generators/scaffold/controller/templates/controller.erb +126 -0
  37. data/lib/springmvc-scaffold/generators/scaffold/controller/templates/controller_test.erb +13 -0
  38. data/lib/springmvc-scaffold/generators/scaffold/imports.rb +18 -0
  39. data/lib/springmvc-scaffold/generators/scaffold/jsp/jsp_generator.rb +40 -0
  40. data/lib/springmvc-scaffold/generators/scaffold/jsp/templates/edit.erb +15 -0
  41. data/lib/springmvc-scaffold/generators/scaffold/jsp/templates/form.erb +14 -0
  42. data/lib/springmvc-scaffold/generators/scaffold/jsp/templates/index.erb +38 -0
  43. data/lib/springmvc-scaffold/generators/scaffold/jsp/templates/new.erb +14 -0
  44. data/lib/springmvc-scaffold/generators/scaffold/jsp/templates/show.erb +16 -0
  45. data/lib/springmvc-scaffold/generators/scaffold/model/model_generator.rb +16 -0
  46. data/lib/springmvc-scaffold/generators/scaffold/model/templates/model.erb +22 -0
  47. data/lib/springmvc-scaffold/generators/scaffold/model/templates/model_test.erb +13 -0
  48. data/lib/springmvc-scaffold/generators/scaffold/repository/repository_generator.rb +30 -0
  49. data/lib/springmvc-scaffold/generators/scaffold/repository/templates/repository.erb +18 -0
  50. data/lib/springmvc-scaffold/generators/scaffold/repository/templates/repository_test.erb +13 -0
  51. data/lib/springmvc-scaffold/generators/scaffold/scaffold_generator.rb +31 -0
  52. data/lib/springmvc-scaffold/runner.rb +7 -0
  53. data/lib/springmvc-scaffold/runner/commands_help.rb +11 -0
  54. data/lib/springmvc-scaffold/runner/generator.rb +14 -0
  55. data/lib/springmvc-scaffold/runner/help.rb +10 -0
  56. data/lib/springmvc-scaffold/runner/scaffold.rb +15 -0
  57. data/lib/springmvc-scaffold/version.rb +3 -0
  58. data/spec/spec_helper.rb +23 -0
  59. data/spec/springmvc-scaffold/configuration_spec.rb +124 -0
  60. data/spec/springmvc-scaffold/execution_spec.rb +40 -0
  61. data/spec/springmvc-scaffold/generators/app/app_generator_spec.rb +226 -0
  62. data/spec/springmvc-scaffold/generators/app/dependency_spec.rb +14 -0
  63. data/spec/springmvc-scaffold/generators/app/templates/Entity.java +46 -0
  64. data/spec/springmvc-scaffold/generators/app/templates/RepositoryJPA.java +49 -0
  65. data/spec/springmvc-scaffold/generators/app/templates/build.gradle +59 -0
  66. data/spec/springmvc-scaffold/generators/app/templates/pom.xml +146 -0
  67. data/spec/springmvc-scaffold/generators/app/templates/springmvc-scaffold.properties +6 -0
  68. data/spec/springmvc-scaffold/generators/scaffold/attribute_spec.rb +215 -0
  69. data/spec/springmvc-scaffold/generators/scaffold/base_scaffold_spec.rb +70 -0
  70. data/spec/springmvc-scaffold/generators/scaffold/controller/controller_generator_spec.rb +53 -0
  71. data/spec/springmvc-scaffold/generators/scaffold/controller/templates/ProductsController.java +97 -0
  72. data/spec/springmvc-scaffold/generators/scaffold/imports_spec.rb +9 -0
  73. data/spec/springmvc-scaffold/generators/scaffold/jsp/jsp_generator_spec.rb +46 -0
  74. data/spec/springmvc-scaffold/generators/scaffold/jsp/templates/form.jsp +25 -0
  75. data/spec/springmvc-scaffold/generators/scaffold/model/model_generator_spec.rb +28 -0
  76. data/spec/springmvc-scaffold/generators/scaffold/model/templates/Product.java +43 -0
  77. data/spec/springmvc-scaffold/generators/scaffold/repository/repository_generator_spec.rb +49 -0
  78. data/spec/springmvc-scaffold/generators/scaffold/repository/templates/Clients.java +16 -0
  79. data/spec/springmvc-scaffold/generators/scaffold/repository/templates/Products.java +10 -0
  80. data/spec/springmvc-scaffold/generators/scaffold/scaffold_generator_spec.rb +60 -0
  81. data/spec/springmvc-scaffold/runner/commands_help_spec.rb +13 -0
  82. data/spec/springmvc-scaffold/runner/generator_spec.rb +21 -0
  83. data/spec/springmvc-scaffold/runner/help_spec.rb +22 -0
  84. data/spec/springmvc-scaffold/runner/scaffold_spec.rb +36 -0
  85. data/spec/springmvc-scaffold_spec.rb +4 -0
  86. data/springmvc-scaffold.gemspec +27 -0
  87. metadata +185 -0
@@ -0,0 +1,51 @@
1
+ package <%= options[:package] %>.<%= options[:repositories_package] %>;
2
+
3
+ import java.lang.reflect.ParameterizedType;
4
+ import java.util.List;
5
+
6
+ import org.hibernate.Session;
7
+ import org.hibernate.SessionFactory;
8
+ import org.springframework.transaction.annotation.Transactional;
9
+
10
+ @Transactional
11
+ public abstract class GenericRepository<T> {
12
+
13
+ private final SessionFactory factory;
14
+ protected final Class<T> clazz;
15
+
16
+ protected GenericRepository(SessionFactory factory) {
17
+ this.factory = factory;
18
+
19
+ @SuppressWarnings("unchecked")
20
+ Class<T> clazz = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
21
+
22
+ this.clazz = clazz;
23
+ }
24
+
25
+ protected Session session() {
26
+ return factory.getCurrentSession();
27
+ }
28
+
29
+ public void add(T entity) {
30
+ session().persist(entity);
31
+ }
32
+
33
+ @SuppressWarnings("unchecked")
34
+ public T update(T entity) {
35
+ return (T) session().merge(entity);
36
+ }
37
+
38
+ public void remove(Long id) {
39
+ session().delete(get(id));
40
+ }
41
+
42
+ @SuppressWarnings("unchecked")
43
+ public T get(Long id) {
44
+ return (T) session().get(clazz, id);
45
+ }
46
+
47
+ @SuppressWarnings("unchecked")
48
+ public List<T> all() {
49
+ return session().createQuery("from " + clazz.getName()).list();
50
+ }
51
+ }
@@ -0,0 +1,49 @@
1
+ package <%= options[:package] %>.<%= options[:repositories_package] %>;
2
+
3
+ import java.lang.reflect.ParameterizedType;
4
+ import java.util.List;
5
+
6
+ import javax.persistence.EntityManager;
7
+ import javax.persistence.PersistenceContext;
8
+
9
+ import org.springframework.transaction.annotation.Transactional;
10
+
11
+ @Transactional
12
+ public abstract class GenericRepository<T> {
13
+
14
+ protected EntityManager em;
15
+ protected final Class<T> clazz;
16
+
17
+ protected GenericRepository() {
18
+ @SuppressWarnings("unchecked")
19
+ Class<T> clazz = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
20
+
21
+ this.clazz = clazz;
22
+ }
23
+
24
+ @PersistenceContext
25
+ public void setEntityManager(EntityManager em) {
26
+ this.em = em;
27
+ }
28
+
29
+ public void add(T entity) {
30
+ em.persist(entity);
31
+ }
32
+
33
+ public T update(T entity) {
34
+ return em.merge(entity);
35
+ }
36
+
37
+ public void remove(Long id) {
38
+ em.remove(get(id));
39
+ }
40
+
41
+ public T get(Long id) {
42
+ return em.find(clazz, id);
43
+ }
44
+
45
+ @SuppressWarnings("unchecked")
46
+ public List<T> all() {
47
+ return em.createQuery("from " + clazz.getName()).getResultList();
48
+ }
49
+ }
@@ -0,0 +1,95 @@
1
+ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
3
+ <modelVersion>4.0.0</modelVersion>
4
+ <groupId><%= @project_name %></groupId>
5
+ <artifactId><%= @project_name %></artifactId>
6
+ <packaging>war</packaging>
7
+ <version>0.0.1-SNAPSHOT</version>
8
+ <name><%= @project_name %></name>
9
+
10
+ <properties>
11
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
12
+ </properties>
13
+
14
+ <build>
15
+ <outputDirectory>${basedir}/<%= Configuration::WEB_INF %>/classes</outputDirectory>
16
+ <plugins>
17
+ <plugin>
18
+ <artifactId>maven-compiler-plugin</artifactId>
19
+ <version>3.2</version>
20
+ <configuration>
21
+ <source>1.7</source>
22
+ <target>1.7</target>
23
+ <encoding>UTF-8</encoding>
24
+ </configuration>
25
+ </plugin>
26
+ <plugin>
27
+ <artifactId>maven-eclipse-plugin</artifactId>
28
+ <version>2.9</version>
29
+ <configuration>
30
+ <downloadSources>true</downloadSources>
31
+ <downloadJavadocs>true</downloadJavadocs>
32
+ <wtpversion>2.0</wtpversion>
33
+ </configuration>
34
+ </plugin>
35
+ <plugin>
36
+ <groupId>org.apache.maven.plugins</groupId>
37
+ <artifactId>maven-war-plugin</artifactId>
38
+ <version>2.5</version>
39
+ </plugin>
40
+ <plugin>
41
+ <groupId>org.eclipse.jetty</groupId>
42
+ <artifactId>jetty-maven-plugin</artifactId>
43
+ <version>9.2.5.v20141112</version>
44
+ <configuration>
45
+ <scanIntervalSeconds>3</scanIntervalSeconds>
46
+ <stopKey>foo</stopKey>
47
+ <stopPort>9999</stopPort>
48
+ <webAppConfig>
49
+ <contextPath>/</contextPath>
50
+ </webAppConfig>
51
+ </configuration>
52
+ </plugin>
53
+ </plugins>
54
+ </build>
55
+
56
+ <dependencies><% Dependencies.compile_scope.each do |dependency| %>
57
+ <dependency>
58
+ <groupId><%= dependency.group %></groupId>
59
+ <artifactId><%= dependency.name %></artifactId>
60
+ <version><%= dependency.version %></version><% if dependency.has_exclusions? %>
61
+ <exclusions><% dependency.exclusions.each do |exclusion| %>
62
+ <exclusion>
63
+ <groupId><%= exclusion.group %></groupId>
64
+ <artifactId><%= exclusion.name %></artifactId>
65
+ </exclusion><% end %>
66
+ </exclusions><% end %>
67
+ </dependency><% end %>
68
+
69
+ <!-- Test dependencies --><% Dependencies.test_scope.each do |dependency| %>
70
+ <dependency>
71
+ <groupId><%= dependency.group %></groupId>
72
+ <artifactId><%= dependency.name %></artifactId>
73
+ <version><%= dependency.version %></version>
74
+ <scope>test</scope>
75
+ </dependency><% end %>
76
+
77
+ <!-- Provided dependencies --><% Dependencies.provided_scope.each do |dependency| %>
78
+ <dependency>
79
+ <groupId><%= dependency.group %></groupId>
80
+ <artifactId><%= dependency.name %></artifactId>
81
+ <version><%= dependency.version %></version>
82
+ <scope>provided</scope>
83
+ </dependency><% end %>
84
+ </dependencies>
85
+
86
+ <reporting>
87
+ <plugins>
88
+ <plugin>
89
+ <groupId>org.codehaus.mojo</groupId>
90
+ <artifactId>cobertura-maven-plugin</artifactId>
91
+ <version>2.6</version>
92
+ </plugin>
93
+ </plugins>
94
+ </reporting>
95
+ </project>
@@ -0,0 +1,16 @@
1
+ hibernate.connection.driver_class=org.hsqldb.jdbcDriver
2
+ hibernate.connection.url=jdbc:hsqldb:file:tmp/devdb
3
+ hibernate.hbm2ddl.auto=update
4
+ hibernate.query.substitutions=true=1, false=0
5
+ hibernate.show_sql=true
6
+ hibernate.format_sql=true
7
+
8
+ #DATASOURCE POOL CONFIGURATIONS
9
+ hibernate.connection.provider_class=org.hibernate.connection.C3P0ConnectionProvider
10
+ maxPoolSize=20
11
+ minPoolSize=3
12
+ initialPoolSize=3
13
+ timeout=25200
14
+ acquireIncrement=5
15
+ preferredTestQuery=select 1
16
+ idleConnectionTestPeriod=100
@@ -0,0 +1,4 @@
1
+ log4j.appender.console=org.apache.log4j.ConsoleAppender
2
+ log4j.appender.console.layout=org.apache.log4j.PatternLayout
3
+ log4j.appender.console.layout.ConversionPattern=%d{yy-MM-dd HH:mm:ss,SSS} [%p] %c - %m%n
4
+ log4j.rootLogger=info, console
@@ -0,0 +1,6 @@
1
+ build_tool: <%= options[:build_tool] %>
2
+ package: <%= options[:package] %>
3
+ orm: <%= orm %>
4
+ models_package: <%= options[:models_package] %>
5
+ controllers_package: <%= options[:controllers_package] %>
6
+ repositories_package: <%= options[:repositories_package] %>
@@ -0,0 +1,15 @@
1
+ <!DOCTYPE HTML>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title><sitemesh:write property='title'/></title>
6
+ <sitemesh:write property='head'/>
7
+ <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/stylesheets/application.css"/>
8
+ </head>
9
+
10
+ <body>
11
+ <sitemesh:write property='body'/>
12
+ <script type="text/javascript" src="${pageContext.request.contextPath}/lib/jquery/dist/jquery.min.js"></script>
13
+ <script type="text/javascript" src="${pageContext.request.contextPath}/javascripts/application.js"></script>
14
+ </body>
15
+ </html>
@@ -0,0 +1,4 @@
1
+ <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
2
+ <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
3
+ <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
4
+ <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
@@ -0,0 +1,3 @@
1
+ <sitemesh>
2
+ <mapping path="/*" decorator="/WEB-INF/jsp/decorators/main.jsp"/>
3
+ </sitemesh>
@@ -0,0 +1,42 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <beans xmlns="http://www.springframework.org/schema/beans"
3
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
4
+ xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
5
+ xmlns:tx="http://www.springframework.org/schema/tx"
6
+ xsi:schemaLocation="http://www.springframework.org/schema/beans
7
+ http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
8
+ http://www.springframework.org/schema/context
9
+ http://www.springframework.org/schema/context/spring-context-4.1.xsd
10
+ http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
11
+ http://www.springframework.org/schema/tx
12
+ http://www.springframework.org/schema/tx/spring-tx-4.1.xsd">
13
+
14
+ <context:component-scan base-package="<%= @base_package %>" />
15
+
16
+ <mvc:annotation-driven />
17
+
18
+ <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
19
+ <property name="prefix" value="/WEB-INF/jsp/" />
20
+ <property name="suffix" value=".jsp" />
21
+ </bean>
22
+
23
+ <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" />
24
+
25
+ <%- if orm == "hibernate" -%>
26
+ <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"
27
+ p:dataSource-ref="dataSource" p:packagesToScan="app.models" />
28
+
29
+ <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"
30
+ p:sessionFactory-ref="sessionFactory" /><% else -%>
31
+ <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
32
+ p:dataSource-ref="dataSource" p:packagesToScan="<%= @models_package %>">
33
+ <property name="jpaVendorAdapter">
34
+ <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
35
+ </property>
36
+ </bean>
37
+
38
+ <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"
39
+ p:entityManagerFactory-ref="entityManagerFactory" />
40
+ <%- end %>
41
+ <tx:annotation-driven />
42
+ </beans>
@@ -0,0 +1,52 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
3
+ xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
4
+ id="WebApp_ID" version="2.5">
5
+
6
+ <display-name><%= @project_name %></display-name>
7
+
8
+ <servlet>
9
+ <servlet-name>spring</servlet-name>
10
+ <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
11
+ <load-on-startup>1</load-on-startup>
12
+ </servlet>
13
+
14
+ <servlet-mapping>
15
+ <servlet-name>spring</servlet-name>
16
+ <url-pattern>/</url-pattern>
17
+ </servlet-mapping>
18
+
19
+ <filter>
20
+ <filter-name>hiddenHttpMethodFilter</filter-name>
21
+ <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
22
+ </filter>
23
+
24
+ <filter-mapping>
25
+ <filter-name>hiddenHttpMethodFilter</filter-name>
26
+ <servlet-name>spring</servlet-name>
27
+ </filter-mapping>
28
+
29
+ <filter>
30
+ <filter-name>sitemesh</filter-name>
31
+ <filter-class>org.sitemesh.config.ConfigurableSiteMeshFilter</filter-class>
32
+ </filter>
33
+
34
+ <filter-mapping>
35
+ <filter-name>sitemesh</filter-name>
36
+ <url-pattern>/*</url-pattern>
37
+ </filter-mapping>
38
+
39
+ <servlet-mapping>
40
+ <servlet-name>default</servlet-name>
41
+ <url-pattern>*.css,*.js,*.map</url-pattern>
42
+ </servlet-mapping>
43
+
44
+ <jsp-config>
45
+ <jsp-property-group>
46
+ <url-pattern>*.jsp</url-pattern>
47
+ <page-encoding>UTF-8</page-encoding>
48
+ <include-prelude>/WEB-INF/jsp/prelude.jspf</include-prelude>
49
+ </jsp-property-group>
50
+ </jsp-config>
51
+
52
+ </web-app>
@@ -0,0 +1,7 @@
1
+ {
2
+ "name": "<%= @project_name %>",
3
+ "version": "1.0.0",
4
+ "dependencies": {
5
+ "jquery": "~2.1.3"
6
+ }
7
+ }
@@ -0,0 +1,38 @@
1
+ body {
2
+ font-family: verdana, arial, helvetica, sans-serif;
3
+ font-size: 14px;
4
+ line-height: 18px;
5
+ }
6
+
7
+ p, ol, ul, td {
8
+ font-family: verdana, arial, helvetica, sans-serif;
9
+ font-size: 14px;
10
+ line-height: 18px;
11
+ }
12
+
13
+ a {
14
+ color: #4169E1;
15
+ }
16
+
17
+ a:visited {
18
+ color: #5F9EA0;
19
+ }
20
+
21
+ a:hover {
22
+ color: #fff;
23
+ background-color: #4169E1;
24
+ }
25
+
26
+ div.field, div.actions {
27
+ margin-bottom: 10px;
28
+ }
29
+
30
+ #message {
31
+ color: #00BFFF;
32
+ }
33
+
34
+ span[id$=errors] {
35
+ padding: 2px;
36
+ color: white;
37
+ background-color: red;
38
+ }
@@ -0,0 +1,17 @@
1
+ module SpringMvcScaffold
2
+ class Base < Thor::Group
3
+ include Thor::Actions
4
+ end
5
+ end
6
+
7
+ require File.dirname(__FILE__) + '/app/app_generator'
8
+ require File.dirname(__FILE__) + '/app/dependencies'
9
+ require File.dirname(__FILE__) + '/app/dependency'
10
+ require File.dirname(__FILE__) + '/scaffold/scaffold_generator'
11
+ require File.dirname(__FILE__) + '/scaffold/base_scaffold'
12
+ require File.dirname(__FILE__) + '/scaffold/attribute'
13
+ require File.dirname(__FILE__) + '/scaffold/imports'
14
+ require File.dirname(__FILE__) + '/scaffold/model/model_generator'
15
+ require File.dirname(__FILE__) + '/scaffold/controller/controller_generator'
16
+ require File.dirname(__FILE__) + '/scaffold/repository/repository_generator'
17
+ require File.dirname(__FILE__) + '/scaffold/jsp/jsp_generator'
@@ -0,0 +1,68 @@
1
+ class Attribute
2
+ VALID_TYPES = %w(boolean double float short integer long string text date references)
3
+
4
+ attr_accessor :name, :type
5
+
6
+ def initialize(name, type)
7
+ @name = name.underscore.camelize(:lower)
8
+ @type = type.downcase
9
+ validate
10
+ end
11
+
12
+ def getter_name
13
+ getter_prefix + name.camelize
14
+ end
15
+
16
+ def setter_name
17
+ "set#{name.camelize}"
18
+ end
19
+
20
+ def boolean?
21
+ type == "boolean"
22
+ end
23
+
24
+ def is_reference?
25
+ type.eql?("references")
26
+ end
27
+
28
+ def declaration
29
+ "#{java_type} #{name}"
30
+ end
31
+
32
+ def java_type
33
+ java = type.capitalize
34
+ java = "boolean" if boolean?
35
+ java = "String" if type.eql?("text")
36
+ java = "Date" if type.eql?("date")
37
+ java = name.camelize if is_reference?
38
+ java
39
+ end
40
+
41
+ def html_input
42
+ input = "input"
43
+ input = "checkbox" if boolean?
44
+ input = "textarea" if type == "text"
45
+ input
46
+ end
47
+
48
+ def import
49
+ Imports.new(type).package
50
+ end
51
+
52
+ def html_label
53
+ name.underscore.humanize
54
+ end
55
+
56
+ private
57
+ def validate
58
+ unless VALID_TYPES.include?(@type)
59
+ puts "Attribute #{@type} is not supported. The supported attributes types are: #{VALID_TYPES.join(", ")}"
60
+ Kernel::exit
61
+ end
62
+ end
63
+
64
+ def getter_prefix
65
+ return "is" if boolean?
66
+ "get"
67
+ end
68
+ end