RLiferayTool 0.0.2 → 0.0.3
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.
- checksums.yaml +8 -8
- data/lib/r_liferay_lib/column.rb +27 -0
- data/lib/r_liferay_lib/portlet_service_templates/ListItemLocalServiceImpl.java.erb +40 -0
- data/lib/r_liferay_lib/portlet_service_templates/ListItemServiceImpl.java.erb +41 -0
- data/lib/r_liferay_lib/portlet_service_templates/PortletController.java.erb +145 -0
- data/lib/r_liferay_lib/portlet_service_templates/add.jsp.erb +16 -0
- data/lib/r_liferay_lib/portlet_service_templates/edit.jsp.erb +20 -0
- data/lib/r_liferay_lib/portlet_service_templates/init.jsp.erb +12 -0
- data/lib/r_liferay_lib/portlet_service_templates/liferay-plugin-package.properties.erb +13 -0
- data/lib/r_liferay_lib/portlet_service_templates/portlet.xml.erb +33 -0
- data/lib/r_liferay_lib/portlet_service_templates/view.jsp.erb +64 -0
- data/lib/r_liferay_lib/prepare_portlet_service.rb +139 -0
- data/lib/r_liferay_lib/read_pom.rb +26 -0
- data/lib/r_liferay_lib/read_service.rb +56 -0
- data/lib/r_liferay_lib/template_utility.rb +49 -0
- data/lib/r_liferay_lib/xml_utility.rb +49 -0
- metadata +16 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZjgwZmZjZDVkZWU1MDY2NWRhOTdmNzVmYzUzNmIyMjlmZjQ5NmNkOQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZTkxOTdlMzBlNDE1MzEwNjY0YTVmYzJiNTZhZTRjN2YwMDhlMDFiOQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MjViZGJiM2JjYjgwYjYzN2FiYzNiMmU3ZDEyYjczYjUzMWQ3NzFlOTg4YmQw
|
10
|
+
NjJhODgyZDhhZjI3NzUxNmZkODk3ZjIxZmU2YzUzMGYwNzBmYjU1OWRkMDlh
|
11
|
+
Nzk4MDI4ZWIxMTExYzVkOGY5ZDFmODBiMDAwMjQyYmI3YjdkZjU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
M2Q1ZDllNzgyNDUxODUyMTk1NzkyYjI1ZTk4NDM2YjY3YTgxNjY5NTBkMzM4
|
14
|
+
ODZmZWY5OGRkNmNkODlmZjA3OTA5NmVjM2IyYjlmN2JlNjYwNmZhZjczMThi
|
15
|
+
MzRiZjk5OWNjMzUwNDNmZjc4NGU5MzgyZjZiOWNmZDY4Y2RjMWY=
|
@@ -0,0 +1,27 @@
|
|
1
|
+
|
2
|
+
module RLiferayLib
|
3
|
+
class Column
|
4
|
+
attr_reader :column_name, :column_type
|
5
|
+
|
6
|
+
def initialize(column_name, column_type)
|
7
|
+
self.column_name=column_name
|
8
|
+
self.column_type=column_type
|
9
|
+
end
|
10
|
+
|
11
|
+
def getFormType
|
12
|
+
FORM_TYPE_MAP[column_type]
|
13
|
+
end
|
14
|
+
|
15
|
+
def getJavaType
|
16
|
+
JAVA_TYPE_MAP[column_type]
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
attr_writer :column_name, :column_type
|
22
|
+
|
23
|
+
FORM_TYPE_MAP = {'String' => 'text', 'int' => 'number', 'long' => 'number', 'Date' => 'date', 'boolean' => 'checkbox'}
|
24
|
+
JAVA_TYPE_MAP = {'String' => 'String', 'int' => 'Integer', 'long' => 'long', 'Date' => 'date', 'boolean' => 'Boolean'}
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
package mil.army.hrc.ikrome.<%= template_variables['project_name'].downcase %>.service.impl;
|
2
|
+
|
3
|
+
import com.liferay.portal.kernel.exception.PortalException;
|
4
|
+
import com.liferay.portal.kernel.exception.SystemException;
|
5
|
+
import java.util.Date;
|
6
|
+
import mil.army.hrc.ikrome.<%= template_variables['project_name'].downcase %>.service.base.<%= template_variables['name']%>LocalServiceBaseImpl;
|
7
|
+
import mil.army.hrc.ikrome.<%= template_variables['project_name'].downcase %>.model.<%= template_variables['name']%>;
|
8
|
+
|
9
|
+
/**
|
10
|
+
* The implementation of the <%= template_variables['name']%> local service.
|
11
|
+
*
|
12
|
+
* <p>
|
13
|
+
* All custom service methods should be put in this class. Whenever methods are added, rerun ServiceBuilder to copy their definitions into the {@link mil.army.hrc.ikrome.<%= template_variables['project_name'] %>.service.<%= template_variables['name']%>LocalService} interface.
|
14
|
+
*
|
15
|
+
* <p>
|
16
|
+
* This is a local service. Methods of this service will not have security checks based on the propagated JAAS credentials because this service can only be accessed from within the same VM.
|
17
|
+
* </p>
|
18
|
+
*
|
19
|
+
* @author Brian Wing Shun Chan
|
20
|
+
* @see mil.army.hrc.ikrome.<%= template_variables['project_name'].downcase %>.service.base.<%= template_variables['name']%>LocalServiceBaseImpl
|
21
|
+
* @see mil.army.hrc.ikrome.<%= template_variables['project_name'].downcase %>.service.<%= template_variables['name']%>LocalServiceUtil
|
22
|
+
*/
|
23
|
+
public class <%= template_variables['name']%>LocalServiceImpl extends <%= template_variables['name']%>LocalServiceBaseImpl {
|
24
|
+
/*
|
25
|
+
* NOTE FOR DEVELOPERS:
|
26
|
+
*
|
27
|
+
* Never reference this interface directly. Always use {@link mil.army.hrc.ikrome.<%= template_variables['project_name'] %>.service.<%= template_variables['name']%>LocalServiceUtil} to access the <%= template_variables['name']%> local service.
|
28
|
+
*/
|
29
|
+
public <%= template_variables['name']%> add<%= template_variables['name']%>(<% template_variables['columns'].each_with_index do |(column_name, column_object), index| %>
|
30
|
+
<%= column_object.column_type %> <%=column_name%><% if index < template_variables['columns'].size - 1 %>,<%end%><% end %>
|
31
|
+
) throws PortalException, SystemException{
|
32
|
+
long itemId = counterLocalService.increment(<%= template_variables['name']%>.class.getName());
|
33
|
+
<%= template_variables['name']%> item = <%= template_variables['name'][0,1].downcase + template_variables['name'][1..-1]%>Persistence.create(itemId);
|
34
|
+
<%- template_variables['columns'].each do |column_name, column_object| -%>
|
35
|
+
item.set<%=column_name[0,1].capitalize + column_name[1..-1]%>(<%=column_name%>);
|
36
|
+
<%- end -%>
|
37
|
+
super.add<%= template_variables['name']%>(item);
|
38
|
+
return item;
|
39
|
+
}
|
40
|
+
}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
package mil.army.hrc.ikrome.<%= template_variables['project_name'].downcase %>.service.impl;
|
2
|
+
|
3
|
+
import com.liferay.portal.kernel.exception.PortalException;
|
4
|
+
import com.liferay.portal.kernel.exception.SystemException;
|
5
|
+
import java.util.Date;
|
6
|
+
import mil.army.hrc.ikrome.<%= template_variables['project_name'].downcase %>.service.base.<%= template_variables['name']%>ServiceBaseImpl;
|
7
|
+
import mil.army.hrc.ikrome.<%= template_variables['project_name'].downcase %>.model.<%= template_variables['name']%>;
|
8
|
+
|
9
|
+
/**
|
10
|
+
* The implementation of the <%= template_variables['name']%> remote service.
|
11
|
+
*
|
12
|
+
* <p>
|
13
|
+
* All custom service methods should be put in this class. Whenever methods are added, rerun ServiceBuilder to copy their definitions into the {@link mil.army.hrc.ikrome.<%= template_variables['project_name'] %>.service.<%= template_variables['name']%>Service} interface.
|
14
|
+
*
|
15
|
+
* <p>
|
16
|
+
* This is a remote service. Methods of this service are expected to have security checks based on the propagated JAAS credentials because this service can be accessed remotely.
|
17
|
+
* </p>
|
18
|
+
*
|
19
|
+
* @author Brian Wing Shun Chan
|
20
|
+
* @see mil.army.hrc.ikrome.<%= template_variables['project_name'] %>.service.base.<%= template_variables['name']%>ServiceBaseImpl
|
21
|
+
* @see mil.army.hrc.ikrome.<%= template_variables['project_name'] %>.service.<%= template_variables['name']%>ServiceUtil
|
22
|
+
*/
|
23
|
+
public class <%= template_variables['name']%>ServiceImpl extends <%= template_variables['name']%>ServiceBaseImpl {
|
24
|
+
/*
|
25
|
+
* NOTE FOR DEVELOPERS:
|
26
|
+
*
|
27
|
+
* Never reference this interface directly. Always use {@link mil.army.hrc.ikrome.<%= template_variables['project_name'] %>.service.<%= template_variables['name']%>ServiceUtil} to access the <%= template_variables['name']%> remote service.
|
28
|
+
*/
|
29
|
+
|
30
|
+
public <%= template_variables['name']%> add<%= template_variables['name']%>(
|
31
|
+
<%- template_variables['columns'].each_with_index do |(column_name, column_object), index| -%>
|
32
|
+
<%= column_object.column_type %> <%=column_name%><% if index < template_variables['columns'].size - 1 %>,<%end%>
|
33
|
+
<%- end -%>
|
34
|
+
) throws PortalException, SystemException{
|
35
|
+
return <%= template_variables['name'][0,1].downcase + template_variables['name'][1..-1]%>LocalService.add<%= template_variables['name']%>(
|
36
|
+
<%- template_variables['columns'].each_with_index do |(column_name, column_object), index| -%>
|
37
|
+
<%=column_name%><% if index < template_variables['columns'].size - 1 %>,<%end%>
|
38
|
+
<%- end -%>
|
39
|
+
);
|
40
|
+
}
|
41
|
+
}
|
@@ -0,0 +1,145 @@
|
|
1
|
+
package mil.army.hrc.ikrome.<%= template_variables['project_name'].downcase %>.portlet;
|
2
|
+
|
3
|
+
import com.liferay.portal.kernel.dao.orm.QueryUtil;
|
4
|
+
import com.liferay.portal.kernel.dao.search.SearchContainer;
|
5
|
+
import com.liferay.portal.kernel.exception.PortalException;
|
6
|
+
import com.liferay.portal.kernel.exception.SystemException;
|
7
|
+
import com.liferay.portal.kernel.log.Log;
|
8
|
+
import com.liferay.portal.kernel.log.LogFactoryUtil;
|
9
|
+
import com.liferay.portal.kernel.util.ParamUtil;
|
10
|
+
import com.liferay.portal.util.PortalUtil;
|
11
|
+
import com.liferay.util.bridges.mvc.MVCPortlet;
|
12
|
+
import java.io.IOException;
|
13
|
+
import java.util.List;
|
14
|
+
import java.util.Date;
|
15
|
+
import java.text.ParseException;
|
16
|
+
import java.text.SimpleDateFormat;
|
17
|
+
import javax.portlet.ActionRequest;
|
18
|
+
import javax.portlet.ActionResponse;
|
19
|
+
import javax.portlet.PortletException;
|
20
|
+
import javax.portlet.PortletURL;
|
21
|
+
import javax.portlet.RenderRequest;
|
22
|
+
import javax.portlet.RenderResponse;
|
23
|
+
import mil.army.hrc.ikrome.<%= template_variables['project_name'].downcase %>.model.<%= template_variables['name']%>;
|
24
|
+
import mil.army.hrc.ikrome.<%= template_variables['project_name'].downcase %>.service.<%= template_variables['name']%>LocalServiceUtil;
|
25
|
+
|
26
|
+
public class PortletController extends MVCPortlet {
|
27
|
+
|
28
|
+
private static Log _log = LogFactoryUtil.getLog(PortletController.class);
|
29
|
+
|
30
|
+
@Override
|
31
|
+
public void doView(RenderRequest request, RenderResponse response) throws IOException, PortletException {
|
32
|
+
try {
|
33
|
+
List<<%= template_variables['name']%>> allItems = <%= template_variables['name']%>LocalServiceUtil.get<%= template_variables['name'].pluralize%>(QueryUtil.ALL_POS, QueryUtil.ALL_POS);
|
34
|
+
SearchContainer searchContainer = setupSearchContainer(request, response, allItems);
|
35
|
+
request.setAttribute("searchContainer", searchContainer);
|
36
|
+
} catch (SystemException se) {
|
37
|
+
_log.error("System error retrieving list items.", se);
|
38
|
+
}
|
39
|
+
request.setAttribute("currentURL", PortalUtil.getCurrentURL(request));
|
40
|
+
super.doView(request, response);
|
41
|
+
}
|
42
|
+
|
43
|
+
public void addItem(ActionRequest actionRequest, ActionResponse actionResponse) {
|
44
|
+
<%- template_variables['columns'].each do |column_name, column_object| -%>
|
45
|
+
<%- if column_object.column_type == 'Date' -%>
|
46
|
+
Date <%=column_name%> = parseDateFromRequest(actionRequest, "<%=column_name%>");
|
47
|
+
<%- else -%>
|
48
|
+
<%=column_object.column_type%> <%=column_name%> = ParamUtil.get<%=column_object.getJavaType.capitalize%>(actionRequest, "<%=column_name%>");
|
49
|
+
<%- end -%>
|
50
|
+
<%- end -%>
|
51
|
+
try {
|
52
|
+
<%= template_variables['name']%>LocalServiceUtil.add<%= template_variables['name']%>(
|
53
|
+
<%- template_variables['columns'].each_with_index do |(column_name, column_object), index| -%>
|
54
|
+
<%=column_name%><% if index < template_variables['columns'].size - 1 %>,<%end%>
|
55
|
+
<%- end -%>
|
56
|
+
);
|
57
|
+
} catch (SystemException se) {
|
58
|
+
_log.error("System exception adding item.", se);
|
59
|
+
} catch (PortalException pe) {
|
60
|
+
_log.error("PortalException adding item", pe);
|
61
|
+
}
|
62
|
+
}
|
63
|
+
|
64
|
+
public void deleteItem(ActionRequest actionRequest, ActionResponse actionResponse) {
|
65
|
+
long itemId = ParamUtil.getLong(actionRequest, "item-id");
|
66
|
+
_log.info("Delete Item Id: " + itemId);
|
67
|
+
|
68
|
+
try {
|
69
|
+
<%= template_variables['name']%>LocalServiceUtil.delete<%= template_variables['name']%>(itemId);
|
70
|
+
} catch (SystemException se) {
|
71
|
+
_log.error("System exception adding item.", se);
|
72
|
+
} catch (PortalException pe) {
|
73
|
+
_log.error("PortalException adding item", pe);
|
74
|
+
}
|
75
|
+
}
|
76
|
+
|
77
|
+
public void updateItem(ActionRequest actionRequest, ActionResponse actionResponse) {
|
78
|
+
long itemId = ParamUtil.getLong(actionRequest, "item-id");
|
79
|
+
<%- template_variables['columns'].each do |column_name, column_object| -%>
|
80
|
+
<%- if column_object.column_type == 'Date' -%>
|
81
|
+
Date <%=column_name%> = parseDateFromRequest(actionRequest, "<%=column_name%>");
|
82
|
+
<%- else -%>
|
83
|
+
<%=column_object.column_type%> <%=column_name%> = ParamUtil.get<%=column_object.getJavaType.capitalize%>(actionRequest, "<%=column_name%>");
|
84
|
+
<%- end -%>
|
85
|
+
<%- end -%>
|
86
|
+
try {
|
87
|
+
<%= template_variables['name']%> item = <%= template_variables['name']%>LocalServiceUtil.get<%= template_variables['name']%>(itemId);
|
88
|
+
<%- template_variables['columns'].each do |column_name, column_object| -%>
|
89
|
+
item.set<%=column_name[0,1].capitalize + column_name[1..-1]%>(<%=column_name%>);
|
90
|
+
<%- end -%>
|
91
|
+
<%= template_variables['name']%>LocalServiceUtil.update<%= template_variables['name']%>(item);
|
92
|
+
} catch (SystemException se) {
|
93
|
+
_log.error("System Exception retrieving item" + itemId, se);
|
94
|
+
} catch (PortalException pe) {
|
95
|
+
_log.error("Portal Exception retrieving item" + itemId, pe);
|
96
|
+
}
|
97
|
+
}
|
98
|
+
|
99
|
+
private SearchContainer setupSearchContainer(RenderRequest request, RenderResponse response, List allItems) {
|
100
|
+
int currentPage = ParamUtil.getInteger(request, "cur");
|
101
|
+
int delta = ParamUtil.getInteger(request, "delta-param");
|
102
|
+
if (delta == 0) {
|
103
|
+
delta = 5;
|
104
|
+
}
|
105
|
+
PortletURL iteratorURL = response.createRenderURL();
|
106
|
+
iteratorURL.setParameter("delta-param", String.valueOf(delta));
|
107
|
+
SearchContainer<<%= template_variables['name']%>> searchContainer = new SearchContainer<<%= template_variables['name']%>>(request, iteratorURL, null, "No items were found.");
|
108
|
+
searchContainer.setDelta(delta);
|
109
|
+
searchContainer.setDeltaParam("delta-param");
|
110
|
+
int searchStart = getSearchContainerStart(currentPage, delta);
|
111
|
+
int searchEnd = getSearchContainerEnd(currentPage, delta, allItems.size());
|
112
|
+
List<<%= template_variables['name']%>> results = allItems.subList(searchStart, searchEnd);
|
113
|
+
searchContainer.setTotal(allItems.size());
|
114
|
+
searchContainer.setResults(results);
|
115
|
+
return searchContainer;
|
116
|
+
}
|
117
|
+
|
118
|
+
private int getSearchContainerStart(int currentPage, int delta) {
|
119
|
+
int start = 0;
|
120
|
+
if (currentPage > 0) {
|
121
|
+
start = (currentPage - 1) * delta;
|
122
|
+
}
|
123
|
+
return start;
|
124
|
+
}
|
125
|
+
|
126
|
+
private int getSearchContainerEnd(int currentPage, int delta, int total) {
|
127
|
+
int end = getSearchContainerStart(currentPage, delta) + delta;
|
128
|
+
if (end > total) {
|
129
|
+
end = total;
|
130
|
+
}
|
131
|
+
return end;
|
132
|
+
}
|
133
|
+
|
134
|
+
private Date parseDateFromRequest(ActionRequest actionRequest, String fieldName){
|
135
|
+
SimpleDateFormat dateFormatter = new SimpleDateFormat("dd/MM/yyyy");
|
136
|
+
String dateString= ParamUtil.getString(actionRequest, fieldName+"Day")+"/"+(ParamUtil.getInteger(actionRequest, fieldName + "Month") +1) +"/"+ParamUtil.getString(actionRequest, fieldName+"Year");
|
137
|
+
Date resultDate = new Date();
|
138
|
+
try{
|
139
|
+
resultDate = dateFormatter.parse(dateString);
|
140
|
+
}catch(ParseException pe){
|
141
|
+
_log.error("Error parsing date for: " + fieldName);
|
142
|
+
}
|
143
|
+
return resultDate;
|
144
|
+
}
|
145
|
+
}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<%%@include file="/html/init.jsp" %>
|
2
|
+
<portlet:actionURL name="addItem" var="addItemURL">
|
3
|
+
<portlet:param name="redirect" value="${param.backURL}"/>
|
4
|
+
</portlet:actionURL>
|
5
|
+
|
6
|
+
<aui:form action="${addItemURL}" method="post" name="newitemfm">
|
7
|
+
<%- template_variables['columns'].each do |column_name, column_object| -%>
|
8
|
+
<%- if column_object.getFormType == 'date' -%>
|
9
|
+
<liferay-ui:input-date dayParam="<%=column_name%>Day" monthParam="<%=column_name%>Month" yearParam="<%=column_name%>Year" />
|
10
|
+
<%- else -%>
|
11
|
+
<aui:input type="<%= column_object.getFormType %>" name="<%= column_name %>" label="<%= column_name %>"></aui:input>
|
12
|
+
<%- end -%>
|
13
|
+
<%- end -%>
|
14
|
+
<aui:button type="submit"/>
|
15
|
+
<aui:button type="cancel" onClick="${param.backURL}"/>
|
16
|
+
</aui:form>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<%%@include file="/html/init.jsp" %>
|
2
|
+
|
3
|
+
<portlet:actionURL name="updateItem" var="updateItemURL">
|
4
|
+
<portlet:param name="redirect" value="${param.backURL}"/>
|
5
|
+
</portlet:actionURL>
|
6
|
+
|
7
|
+
<aui:form action="${updateItemURL}" method="post" name="updateitemfm">
|
8
|
+
<aui:input type="hidden" name="item-id" value="${param.itemId}"></aui:input>
|
9
|
+
<%- template_variables['columns'].each do |column_name, column_object| -%>
|
10
|
+
<%- if column_object.getFormType == 'date' -%>
|
11
|
+
<liferay-ui:input-date dayParam="<%=column_name%>Day" monthParam="<%=column_name%>Month" yearParam="<%=column_name%>Year" dayValue="${param.<%=column_name%>Day}" monthValue="${param.<%=column_name%>Month}" yearValue="${param.<%=column_name%>Year}"/>
|
12
|
+
<%- elsif column_object.getFormType == 'checkbox' -%>
|
13
|
+
<aui:input type="<%= column_object.getFormType %>" name="<%= column_name %>" label="<%= column_name %>" checked="${param.<%= column_name %>}"></aui:input>
|
14
|
+
<%- else -%>
|
15
|
+
<aui:input type="<%= column_object.getFormType %>" name="<%= column_name %>" label="<%= column_name %>" value="${param.<%= column_name %>}"></aui:input>
|
16
|
+
<%- end -%>
|
17
|
+
<%- end -%>
|
18
|
+
<aui:button type="submit"/>
|
19
|
+
<aui:button type="cancel" onClick="${param.backURL}"/>
|
20
|
+
</aui:form>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<%%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
|
2
|
+
<%%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
|
3
|
+
<%%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
|
4
|
+
<%%@ taglib uri="http://liferay.com/tld/portlet" prefix="liferay-portlet" %>
|
5
|
+
<%%@ taglib uri="http://liferay.com/tld/security" prefix="liferay-security"%>
|
6
|
+
<%%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme" %>
|
7
|
+
<%%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %>
|
8
|
+
<%%@ taglib uri="http://liferay.com/tld/util" prefix="liferay-util" %>
|
9
|
+
<%%@ taglib uri="http://liferay.com/tld/aui" prefix="aui" %>
|
10
|
+
<%%@ page import="mil.army.hrc.ikrome.<%= template_variables['project_name'].downcase %>.service.<%= template_variables['name']%>LocalServiceUtil" %>
|
11
|
+
|
12
|
+
<portlet:defineObjects />
|
@@ -0,0 +1,13 @@
|
|
1
|
+
name=<%= template_variables['project_name'] %>
|
2
|
+
module-group-id=<%= template_variables['project_name'].downcase %>
|
3
|
+
module-incremental-version=<%= template_variables['project_version'] %>
|
4
|
+
tags=
|
5
|
+
short-description=
|
6
|
+
change-log=
|
7
|
+
page-url=http://www.liferay.com
|
8
|
+
author=Liferay, Inc.
|
9
|
+
licenses=EE
|
10
|
+
portal-dependency-jars=\
|
11
|
+
jstl-api.jar,\
|
12
|
+
jstl-impl.jar,\
|
13
|
+
commons-lang.jar
|
@@ -0,0 +1,33 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<portlet-app schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" version="2.0">
|
3
|
+
<portlet>
|
4
|
+
<portlet-name><%= template_variables['project_name'] %></portlet-name>
|
5
|
+
<display-name><%= template_variables['project_name'] %></display-name>
|
6
|
+
<portlet-class>mil.army.hrc.ikrome.<%= template_variables['project_name'].downcase %>.portlet.PortletController</portlet-class>
|
7
|
+
<init-param>
|
8
|
+
<name>view-template</name>
|
9
|
+
<value>/html/view.jsp</value>
|
10
|
+
</init-param>
|
11
|
+
<expiration-cache>0</expiration-cache>
|
12
|
+
<supports>
|
13
|
+
<mime-type>text/html</mime-type>
|
14
|
+
</supports>
|
15
|
+
<portlet-info>
|
16
|
+
<title><%= template_variables['project_name'] %></title>
|
17
|
+
<short-title><%= template_variables['project_name'] %></short-title>
|
18
|
+
<keywords><%= template_variables['project_name'] %></keywords>
|
19
|
+
</portlet-info>
|
20
|
+
<security-role-ref>
|
21
|
+
<role-name>administrator</role-name>
|
22
|
+
</security-role-ref>
|
23
|
+
<security-role-ref>
|
24
|
+
<role-name>guest</role-name>
|
25
|
+
</security-role-ref>
|
26
|
+
<security-role-ref>
|
27
|
+
<role-name>power-user</role-name>
|
28
|
+
</security-role-ref>
|
29
|
+
<security-role-ref>
|
30
|
+
<role-name>user</role-name>
|
31
|
+
</security-role-ref>
|
32
|
+
</portlet>
|
33
|
+
</portlet-app>
|
@@ -0,0 +1,64 @@
|
|
1
|
+
<%%@include file="/html/init.jsp" %>
|
2
|
+
|
3
|
+
<portlet:renderURL var="addItemURL">
|
4
|
+
<portlet:param name="jspPage" value="/html/add.jsp" />
|
5
|
+
<portlet:param name="backURL" value="${currentURL}" />
|
6
|
+
</portlet:renderURL>
|
7
|
+
|
8
|
+
<a href="${addItemURL}">Add Item</a>
|
9
|
+
|
10
|
+
<liferay-ui:search-container searchContainer="${searchContainer}" >
|
11
|
+
<liferay-ui:search-container-results
|
12
|
+
results="${searchContainer.results}"
|
13
|
+
total="${searchContainer.total}"
|
14
|
+
/>
|
15
|
+
|
16
|
+
<liferay-ui:search-container-row
|
17
|
+
className="mil.army.hrc.ikrome.<%= template_variables['project_name'].downcase %>.model.<%= template_variables['name'] %>"
|
18
|
+
keyProperty="<%= template_variables['primary_key'] %>"
|
19
|
+
modelVar="item"
|
20
|
+
>
|
21
|
+
<%- template_variables['columns'].each do |column_name, column_object| -%>
|
22
|
+
<liferay-ui:search-container-column-text
|
23
|
+
name="<%=column_name %>"
|
24
|
+
<%- if column_object.column_type == 'Date' -%>
|
25
|
+
>
|
26
|
+
<fmt:formatDate type="date" value="${item.<%=column_name%>}" />
|
27
|
+
</liferay-ui:search-container-column-text>
|
28
|
+
<%- else -%>
|
29
|
+
property="<%=column_name %>"
|
30
|
+
/>
|
31
|
+
<%- end -%>
|
32
|
+
<% end %>
|
33
|
+
<liferay-ui:search-container-column-text
|
34
|
+
name="actions"
|
35
|
+
>
|
36
|
+
<liferay-ui:icon-menu >
|
37
|
+
<portlet:renderURL var="updateItemURL">
|
38
|
+
<portlet:param name="itemId" value="${item.<%= template_variables['primary_key'] %>}" />
|
39
|
+
<%- template_variables['columns'].each do |column_name, column_object| -%>
|
40
|
+
<%- if column_object.column_type == 'Date' -%>
|
41
|
+
<fmt:formatDate value="${item.<%=column_name%>}" pattern="MM" var="<%=column_name%>m"/>
|
42
|
+
<fmt:formatDate value="${item.<%=column_name%>}" pattern="dd" var="<%=column_name%>d"/>
|
43
|
+
<fmt:formatDate value="${item.<%=column_name%>}" pattern="yyyy" var="<%=column_name%>y" />
|
44
|
+
<portlet:param name="<%=column_name%>Month" value="${<%=column_name%>m -1}" />
|
45
|
+
<portlet:param name="<%=column_name%>Day" value="${<%=column_name%>d}" />
|
46
|
+
<portlet:param name="<%=column_name%>Year" value="${<%=column_name%>y}" />
|
47
|
+
<%- else -%>
|
48
|
+
<portlet:param name="<%=column_name%>" value="${item.<%=column_name%>}" />
|
49
|
+
<%- end -%>
|
50
|
+
<%- end -%>
|
51
|
+
<portlet:param name="backURL" value="${currentURL}" />
|
52
|
+
<portlet:param name="jspPage" value="/html/edit.jsp" />
|
53
|
+
</portlet:renderURL>
|
54
|
+
<liferay-ui:icon image="edit" message="edit" url="${updateItemURL}" />
|
55
|
+
<portlet:actionURL name="deleteItem" var="deleteItemURL">
|
56
|
+
<portlet:param name="item-id" value="${item.<%= template_variables['primary_key'] %>}" />
|
57
|
+
<portlet:param name="redirect" value="${currentURL}" />
|
58
|
+
</portlet:actionURL>
|
59
|
+
<liferay-ui:icon-delete url="${deleteItemURL}" />
|
60
|
+
</liferay-ui:icon-menu>
|
61
|
+
</liferay-ui:search-container-column-text>
|
62
|
+
</liferay-ui:search-container-row>
|
63
|
+
<liferay-ui:search-iterator />
|
64
|
+
</liferay-ui:search-container>
|
@@ -0,0 +1,139 @@
|
|
1
|
+
require_relative 'template_utility'
|
2
|
+
|
3
|
+
module RLiferayLib
|
4
|
+
class PreparePortletService
|
5
|
+
attr_reader :template_directory, :target_directory, :template_variables
|
6
|
+
|
7
|
+
WEB_INF_DIR = '/src/main/webapp/WEB-INF'
|
8
|
+
JSP_DIR = '/src/main/webapp/html'
|
9
|
+
JAVA_DIR = 'src/main/java/mil/army/hrc/ikrome'
|
10
|
+
PLUGIN_PACKAGE_NAME = 'liferay-plugin-package.properties'
|
11
|
+
PORTLET_XML_NAME = 'portlet.xml'
|
12
|
+
CONTROLLER_NAME = 'PortletController.java'
|
13
|
+
LOCAL_IMPL_NAME = 'LocalServiceImpl.java'
|
14
|
+
REMOTE_IMPL_NAME = 'ServiceImpl.java'
|
15
|
+
|
16
|
+
def initialize(template_directory, target_directory, template_variables)
|
17
|
+
self.template_directory=template_directory
|
18
|
+
self.target_directory=target_directory
|
19
|
+
self.template_variables=template_variables
|
20
|
+
generate_properties
|
21
|
+
generate_jsp_files
|
22
|
+
generate_java_files
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
attr_writer :template_directory, :target_directory, :template_variables
|
27
|
+
|
28
|
+
def generate_properties
|
29
|
+
target_directory = self.target_directory + WEB_INF_DIR
|
30
|
+
generate_portlet_xml(target_directory)
|
31
|
+
generate_plugin_package_properties(target_directory)
|
32
|
+
end
|
33
|
+
|
34
|
+
def generate_portlet_xml(target_directory)
|
35
|
+
template_utility = TemplateUtility.new(
|
36
|
+
self.template_directory + '/portlet.xml.erb',
|
37
|
+
target_directory,
|
38
|
+
PORTLET_XML_NAME,
|
39
|
+
self.template_variables)
|
40
|
+
end
|
41
|
+
|
42
|
+
def generate_plugin_package_properties(target_directory)
|
43
|
+
template_utility = TemplateUtility.new(
|
44
|
+
self.template_directory + '/liferay-plugin-package.properties.erb',
|
45
|
+
target_directory,
|
46
|
+
PLUGIN_PACKAGE_NAME,
|
47
|
+
self.template_variables)
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
def generate_jsp_files
|
52
|
+
jsp_target = self.target_directory + JSP_DIR
|
53
|
+
prepare_directory(jsp_target)
|
54
|
+
generate_view_jsp(jsp_target)
|
55
|
+
generate_init_jsp(jsp_target)
|
56
|
+
generate_edit_jsp(jsp_target)
|
57
|
+
generate_add_jsp(jsp_target)
|
58
|
+
end
|
59
|
+
|
60
|
+
def generate_view_jsp(jsp_target)
|
61
|
+
template_utility = TemplateUtility.new(
|
62
|
+
self.template_directory + '/view.jsp.erb',
|
63
|
+
jsp_target,
|
64
|
+
'view.jsp', self.template_variables)
|
65
|
+
end
|
66
|
+
|
67
|
+
def generate_init_jsp(jsp_target)
|
68
|
+
template_utility = TemplateUtility.new(
|
69
|
+
self.template_directory + '/init.jsp.erb',
|
70
|
+
jsp_target,
|
71
|
+
'init.jsp',
|
72
|
+
self.template_variables)
|
73
|
+
end
|
74
|
+
|
75
|
+
def generate_edit_jsp(jsp_target)
|
76
|
+
template_utility = TemplateUtility.new(
|
77
|
+
self.template_directory + '/edit.jsp.erb',
|
78
|
+
jsp_target,
|
79
|
+
'edit.jsp',
|
80
|
+
self.template_variables)
|
81
|
+
end
|
82
|
+
|
83
|
+
def generate_add_jsp(jsp_target)
|
84
|
+
template_utility = TemplateUtility.new(
|
85
|
+
self.template_directory + '/add.jsp.erb',
|
86
|
+
jsp_target,
|
87
|
+
'add.jsp',
|
88
|
+
self.template_variables)
|
89
|
+
end
|
90
|
+
|
91
|
+
|
92
|
+
def generate_java_files
|
93
|
+
target_directory = self.target_directory + '/' + JAVA_DIR + "/#{self.template_variables['project_name'].downcase}"
|
94
|
+
prepare_directory(target_directory)
|
95
|
+
generate_controller(target_directory)
|
96
|
+
generate_local_impl(target_directory)
|
97
|
+
generate_remote_impl(target_directory)
|
98
|
+
end
|
99
|
+
|
100
|
+
def generate_controller(target_directory)
|
101
|
+
target_directory = target_directory + '/portlet'
|
102
|
+
prepare_directory(target_directory)
|
103
|
+
template_utility = TemplateUtility.new(
|
104
|
+
self.template_directory + '/PortletController.java.erb',
|
105
|
+
target_directory,
|
106
|
+
CONTROLLER_NAME,
|
107
|
+
self.template_variables)
|
108
|
+
end
|
109
|
+
|
110
|
+
def generate_local_impl(target_directory)
|
111
|
+
target_directory = target_directory + '/service/impl'
|
112
|
+
prepare_directory(target_directory)
|
113
|
+
template_utility = TemplateUtility.new(
|
114
|
+
self.template_directory + '/ListItemLocalServiceImpl.java.erb',
|
115
|
+
target_directory,
|
116
|
+
"#{self.template_variables['name']}" + LOCAL_IMPL_NAME,
|
117
|
+
self.template_variables)
|
118
|
+
end
|
119
|
+
|
120
|
+
def generate_remote_impl(target_directory)
|
121
|
+
target_directory = target_directory + '/service/impl'
|
122
|
+
prepare_directory(target_directory)
|
123
|
+
template_utility = TemplateUtility.new(
|
124
|
+
self.template_directory + '/ListItemServiceImpl.java.erb',
|
125
|
+
target_directory,
|
126
|
+
"#{self.template_variables['name']}" + REMOTE_IMPL_NAME,
|
127
|
+
self.template_variables)
|
128
|
+
end
|
129
|
+
|
130
|
+
|
131
|
+
private
|
132
|
+
def prepare_directory(directory_path)
|
133
|
+
if !Dir.exist? directory_path
|
134
|
+
FileUtils.mkpath directory_path
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
end
|
139
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require_relative 'column'
|
2
|
+
require_relative 'xml_utility'
|
3
|
+
|
4
|
+
module RLiferayLib
|
5
|
+
class ReadPOM
|
6
|
+
attr_reader :pom_xml_file, :version
|
7
|
+
|
8
|
+
def initialize(pom_xml_file)
|
9
|
+
self.pom_xml_file=pom_xml_file
|
10
|
+
read_xml
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
private
|
16
|
+
attr_writer :pom_xml_file, :version
|
17
|
+
|
18
|
+
def read_xml
|
19
|
+
xml_utility = XMLUtility.new(self.pom_xml_file)
|
20
|
+
self.version = xml_utility.xml_content.at_xpath('/project/version').to_s
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require_relative 'column'
|
2
|
+
require_relative 'xml_utility'
|
3
|
+
|
4
|
+
module RLiferayLib
|
5
|
+
class ReadService
|
6
|
+
attr_reader :service_xml_file, :entities
|
7
|
+
|
8
|
+
def initialize(service_xml_file)
|
9
|
+
self.service_xml_file=service_xml_file
|
10
|
+
self.entities = Hash.new()
|
11
|
+
read_xml
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
private
|
17
|
+
attr_writer :service_xml_file, :entities
|
18
|
+
|
19
|
+
def read_xml
|
20
|
+
xml_utility = XMLUtility.new(self.service_xml_file)
|
21
|
+
entity_nodes = xml_utility.xml_content.xpath('/service-builder/entity')
|
22
|
+
|
23
|
+
entity_nodes.each { | entity_node |
|
24
|
+
entity_name = entity_node.attr('name')
|
25
|
+
self.entities[entity_name] = Hash.new()
|
26
|
+
self.entities[entity_name]['name'] = entity_name
|
27
|
+
self.entities[entity_name]['primary_key'] = ''
|
28
|
+
self.entities[entity_name]['columns'] = Hash.new()
|
29
|
+
read_columns(entity_name, entity_node)
|
30
|
+
}
|
31
|
+
end
|
32
|
+
|
33
|
+
def read_columns(entity_name, entity_node)
|
34
|
+
column_nodes = entity_node.xpath('./column')
|
35
|
+
column_nodes.each { | column_node|
|
36
|
+
column_name = column_node.attr('name')
|
37
|
+
if column_node.attr("primary") == 'true'
|
38
|
+
self.entities[entity_name]['primary_key'] = column_name
|
39
|
+
elsif !IGNORE_COLUMNS.include?(column_name)
|
40
|
+
self.entities[entity_name]['columns'][column_name] = Column.new(column_name, column_node.attr('type'))
|
41
|
+
end
|
42
|
+
}
|
43
|
+
end
|
44
|
+
|
45
|
+
IGNORE_COLUMNS = {
|
46
|
+
'groupId' => 'long',
|
47
|
+
'companyId' => 'long',
|
48
|
+
'userId' => 'long',
|
49
|
+
'userName' => 'String',
|
50
|
+
'createDate' => 'Date',
|
51
|
+
'modifiedDate' => 'Date'
|
52
|
+
}
|
53
|
+
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'erb'
|
2
|
+
require 'active_support/all'
|
3
|
+
|
4
|
+
module RLiferayLib
|
5
|
+
class TemplateUtility
|
6
|
+
attr_accessor :content
|
7
|
+
|
8
|
+
|
9
|
+
def initialize(template_path, target_directory, target_name, template_variables )
|
10
|
+
run_erb(template_path, target_name, target_directory, template_variables)
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
private
|
15
|
+
attr_writer :content
|
16
|
+
|
17
|
+
def run_erb(template_path, target_name, target_directory, template_variables)
|
18
|
+
target_file_name = target_directory + '/' + target_name
|
19
|
+
write_template_results(target_file_name,erb_output(template_path,template_variables))
|
20
|
+
end
|
21
|
+
|
22
|
+
def erb_output(template_name,template_variables=Hash.new())
|
23
|
+
template_content = load_template(template_name)
|
24
|
+
template = ERB.new(template_content, nil, '-')
|
25
|
+
template_results = template.result(binding)
|
26
|
+
template_results
|
27
|
+
end
|
28
|
+
|
29
|
+
def load_template(template_name)
|
30
|
+
if File.exists?(template_name)
|
31
|
+
file = File.open(template_name)
|
32
|
+
contents=file.read()
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def write_template_results(file_name,template_results)
|
37
|
+
if File.exist?(file_name)
|
38
|
+
backup_file(file_name)
|
39
|
+
end
|
40
|
+
File.open(file_name,'w') { |file|
|
41
|
+
file.write(template_results)
|
42
|
+
}
|
43
|
+
end
|
44
|
+
|
45
|
+
def backup_file(file_name)
|
46
|
+
FileUtils.mv(file_name,file_name + '.' + Time.now.strftime("%Y%m%d%H%M%S%L"), :force => true)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
|
3
|
+
module RLiferayLib
|
4
|
+
class XMLUtility
|
5
|
+
attr_reader :xml_file_location, :xml_content, :namespaces
|
6
|
+
|
7
|
+
def initialize(xml_file_location)
|
8
|
+
self.xml_file_location=xml_file_location
|
9
|
+
read_xml_content()
|
10
|
+
end
|
11
|
+
|
12
|
+
def read_xml_content()
|
13
|
+
f = nil
|
14
|
+
begin
|
15
|
+
f = File.open(xml_file_location)
|
16
|
+
self.xml_content = Nokogiri::XML(f)
|
17
|
+
self.namespaces = self.xml_content.collect_namespaces
|
18
|
+
xml_content.remove_namespaces!
|
19
|
+
ensure
|
20
|
+
f.close()
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def write_xml_content()
|
25
|
+
f = nil
|
26
|
+
begin
|
27
|
+
f = File.new(self.xml_file_location,"w")
|
28
|
+
add_namespaces
|
29
|
+
f.write(xml_content.to_s)
|
30
|
+
ensure
|
31
|
+
f.close()
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
|
38
|
+
private
|
39
|
+
attr_writer :xml_file_location, :xml_content, :namespaces
|
40
|
+
|
41
|
+
def add_namespaces
|
42
|
+
self.namespaces.each { | key, value|
|
43
|
+
xml_content.add_namespace_definition(key,value)
|
44
|
+
}
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: RLiferayTool
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Lynch, Mike Zanchi
|
@@ -89,6 +89,21 @@ extensions: []
|
|
89
89
|
extra_rdoc_files: []
|
90
90
|
files:
|
91
91
|
- lib/r_liferay_tool.rb
|
92
|
+
- lib/r_liferay_lib/column.rb
|
93
|
+
- lib/r_liferay_lib/prepare_portlet_service.rb
|
94
|
+
- lib/r_liferay_lib/read_service.rb
|
95
|
+
- lib/r_liferay_lib/xml_utility.rb
|
96
|
+
- lib/r_liferay_lib/read_pom.rb
|
97
|
+
- lib/r_liferay_lib/template_utility.rb
|
98
|
+
- lib/r_liferay_lib/portlet_service_templates/add.jsp.erb
|
99
|
+
- lib/r_liferay_lib/portlet_service_templates/liferay-plugin-package.properties.erb
|
100
|
+
- lib/r_liferay_lib/portlet_service_templates/PortletController.java.erb
|
101
|
+
- lib/r_liferay_lib/portlet_service_templates/edit.jsp.erb
|
102
|
+
- lib/r_liferay_lib/portlet_service_templates/ListItemLocalServiceImpl.java.erb
|
103
|
+
- lib/r_liferay_lib/portlet_service_templates/portlet.xml.erb
|
104
|
+
- lib/r_liferay_lib/portlet_service_templates/init.jsp.erb
|
105
|
+
- lib/r_liferay_lib/portlet_service_templates/ListItemServiceImpl.java.erb
|
106
|
+
- lib/r_liferay_lib/portlet_service_templates/view.jsp.erb
|
92
107
|
- test/liferay-plugin-package.properties
|
93
108
|
- test/pom.xml
|
94
109
|
- test/portlet.xml
|