springmvc-scaffold 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
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