1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.document.service.autopublication;
35
36 import fr.paris.lutece.plugins.document.business.Document;
37 import fr.paris.lutece.plugins.document.business.DocumentFilter;
38 import fr.paris.lutece.plugins.document.business.DocumentHome;
39 import fr.paris.lutece.plugins.document.business.autopublication.DocumentAutoPublication;
40 import fr.paris.lutece.plugins.document.business.autopublication.DocumentAutoPublicationHome;
41 import fr.paris.lutece.plugins.document.business.portlet.DocumentListPortlet;
42 import fr.paris.lutece.plugins.document.business.portlet.DocumentListPortletHome;
43 import fr.paris.lutece.plugins.document.business.portlet.DocumentPortlet;
44 import fr.paris.lutece.plugins.document.business.portlet.DocumentPortletHome;
45 import fr.paris.lutece.plugins.document.business.workflow.DocumentState;
46 import fr.paris.lutece.plugins.document.service.publishing.PublishingService;
47 import fr.paris.lutece.portal.business.portlet.Portlet;
48 import fr.paris.lutece.portal.business.portlet.PortletHome;
49
50 import java.util.ArrayList;
51 import java.util.Collection;
52
53
54
55
56
57
58 public class AutoPublicationService
59 {
60 private static AutoPublicationService _singleton;
61
62
63
64
65
66 public static AutoPublicationService getInstance( )
67 {
68 if ( _singleton == null )
69 {
70 _singleton = new AutoPublicationService( );
71 }
72
73 return _singleton;
74 }
75
76
77
78
79
80 public void init( )
81 {
82 DocumentAutoPublication.init( );
83 }
84
85
86
87
88
89 public String processAutoPublishing( )
90 {
91 StringBuffer sbLogs = new StringBuffer( );
92
93 sbLogs.append( "\r\n[Start] Starting Auto publication daemon...\r\n" );
94
95 long lDuration = System.currentTimeMillis( );
96
97 for ( DocumentAutoPublication documentAutoPublication : DocumentAutoPublicationHome.findAll( ) )
98 {
99 for ( Document document : findPublishableDocumentsList( documentAutoPublication.getIdPortlet( ),
100 documentAutoPublication.getIdSpace( ) ) )
101 {
102 sbLogs.append( "\r\nPublishing Document " + document.getId( ) + " : '" + document.getTitle( ) +
103 "'...\r\n" );
104 PublishingService.getInstance( ).assign( document.getId( ), documentAutoPublication.getIdPortlet( ) );
105 PublishingService.getInstance( ).publish( document.getId( ), documentAutoPublication.getIdPortlet( ) );
106 PublishingService.getInstance( )
107 .changeDocumentOrder( document.getId( ), documentAutoPublication.getIdPortlet( ), 1 );
108 }
109 }
110
111 sbLogs.append( "\r\n[End] Duration : " + ( System.currentTimeMillis( ) - lDuration ) + " milliseconds\r\n" );
112
113 return sbLogs.toString( );
114 }
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131 private Collection<Document> findPublishableDocumentsList( int nPortletId, int nSpaceId )
132 {
133 Collection<Document> listPublishableDocuments = new ArrayList<Document>( );
134 Portlet portlet = PortletHome.findByPrimaryKey( nPortletId );
135 String documentTypeCode = null;
136 int[] arrayCategories = null;
137
138 if ( DocumentListPortletHome.getInstance( ).getPortletTypeId( ).equals( portlet.getPortletTypeId( ) ) )
139 {
140 DocumentListPortletris/lutece/plugins/document/business/portlet/DocumentListPortlet.html#DocumentListPortlet">DocumentListPortlet documentListPortlet = (DocumentListPortlet) portlet;
141 documentTypeCode = documentListPortlet.getDocumentTypeCode( );
142 arrayCategories = documentListPortlet.getIdCategory( );
143 }
144
145 if ( DocumentPortletHome.getInstance( ).getPortletTypeId( ).equals( portlet.getPortletTypeId( ) ) )
146 {
147 DocumentPortlet../fr/paris/lutece/plugins/document/business/portlet/DocumentPortlet.html#DocumentPortlet">DocumentPortlet documentPortlet = (DocumentPortlet) portlet;
148 documentTypeCode = documentPortlet.getDocumentTypeCode( );
149 arrayCategories = documentPortlet.getIdCategory( );
150 }
151
152 if ( ( documentTypeCode == null ) && ( arrayCategories == null ) )
153 {
154 return listPublishableDocuments;
155 }
156
157 DocumentFiltersiness/DocumentFilter.html#DocumentFilter">DocumentFilter documentFilter = new DocumentFilter( );
158 documentFilter.setIdSpace( nSpaceId );
159 documentFilter.setIdState( DocumentState.STATE_VALIDATE );
160 documentFilter.setCodeDocumentType( documentTypeCode );
161 documentFilter.setCategoriesId( arrayCategories );
162
163 for ( Document document : DocumentHome.findByFilter( documentFilter, null ) )
164 {
165 if ( document.isValid( ) &&
166 !PublishingService.getInstance( ).isPublished( document.getId( ), nPortletId ) )
167 {
168 listPublishableDocuments.add( document );
169 }
170 }
171
172 return listPublishableDocuments;
173 }
174
175
176
177
178
179
180
181
182 public static int findCountByPortletAndSpace( int nPortletId, int nSpaceId )
183 {
184 Collection<Document> listDocuments = PublishingService.getInstance( )
185 .getPublishedDocumentsByPortletId( nPortletId );
186 int nCount = 0;
187
188 for ( Document document : listDocuments )
189 {
190 if ( document.getSpaceId( ) == nSpaceId )
191 {
192 nCount++;
193 }
194 }
195
196 return nCount;
197 }
198 }