Skip to content

Commit 8bc8c0f

Browse files
author
Nathan McMinn
committed
Change to support in-place mode
Additional changes to base classes and implementations to support in-place transformations, not requiring a copy of a document to be made to apply watermarks, delete pages, sign, etc.
1 parent b5abbd5 commit 8bc8c0f

File tree

12 files changed

+43
-16
lines changed

12 files changed

+43
-16
lines changed

pdf-toolkit-repo/src/main/amp/config/alfresco/module/org.alfresco.extension.pdftoolkit/context/custom-form-services-context.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,6 @@
2525
<bean id="pdftoolkit.actionFormFilter" class="org.alfresco.extension.pdftoolkit.form.PDFActionFormFilter" parent="baseFormFilter">
2626
<property name="filterRegistry" ref="pdfActionFilterRegistry" />
2727
<property name="serviceRegistry" ref="ServiceRegistry"/>
28+
<property name="repositoryHelper" ref="repositoryHelper" />
2829
</bean>
2930
</beans>

pdf-toolkit-repo/src/main/java/org/alfresco/extension/pdftoolkit/form/PDFActionFormFilter.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,11 @@
1111
import org.alfresco.repo.forms.FormData.FieldData;
1212
import org.alfresco.repo.forms.processor.AbstractFilter;
1313
import org.alfresco.repo.forms.processor.action.ActionFormResult;
14+
import org.alfresco.repo.model.Repository;
1415
import org.alfresco.service.ServiceRegistry;
16+
import org.alfresco.service.cmr.repository.NodeRef;
17+
import org.alfresco.service.cmr.repository.NodeService;
18+
import org.alfresco.service.cmr.repository.StoreRef;
1519
import org.apache.commons.logging.Log;
1620
import org.apache.commons.logging.LogFactory;
1721

@@ -23,6 +27,7 @@ public class PDFActionFormFilter extends AbstractFilter<Object, ActionFormResult
2327
private String INPLACE_PARAM = "prop_" + BasePDFActionExecuter.PARAM_INPLACE;
2428

2529
private ServiceRegistry serviceRegistry;
30+
private Repository repositoryHelper;
2631

2732
@Override
2833
public void afterGenerate(Object obj, List<String> fields,
@@ -48,6 +53,8 @@ public void beforeGenerate(Object obj, List<String> fields,
4853
public void beforePersist(Object obj, FormData formData) {
4954
logger.debug("beforePersist");
5055

56+
NodeService ns = serviceRegistry.getNodeService();
57+
5158
//check the action, is it one we need to handle?
5259
if(obj != null)
5360
{
@@ -59,7 +66,7 @@ public void beforePersist(Object obj, FormData formData) {
5966
FieldData inplace = formData.getFieldData(INPLACE_PARAM);
6067
if(Boolean.valueOf(String.valueOf(inplace.getValue())))
6168
{
62-
formData.addFieldData(DESTINATION_FOLDER_FIELD, "null://null/null", true);
69+
formData.addFieldData(DESTINATION_FOLDER_FIELD, repositoryHelper.getCompanyHome(), true);
6370
}
6471

6572
ActionDefinitionImpl act = (ActionDefinitionImpl)obj;
@@ -91,5 +98,9 @@ public void setServiceRegistry(ServiceRegistry serviceRegistry)
9198
{
9299
this.serviceRegistry = serviceRegistry;
93100
}
94-
101+
102+
public void setRepositoryHelper(Repository repositoryHelper)
103+
{
104+
this.repositoryHelper = repositoryHelper;
105+
}
95106
}

pdf-toolkit-repo/src/main/java/org/alfresco/extension/pdftoolkit/repo/action/executer/BasePDFActionExecuter.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,11 +104,18 @@ protected ContentReader getReader(NodeRef nodeRef)
104104
* @param filename
105105
* @return
106106
*/
107-
protected NodeRef createDestinationNode(String filename, NodeRef destinationParent, NodeRef target)
107+
protected NodeRef createDestinationNode(String filename, NodeRef destinationParent, NodeRef target, boolean inplace)
108108
{
109109

110110
NodeRef destinationNode;
111111

112+
// if inplace mode is turned on, the destination for the modified content
113+
// is the original node
114+
if(inplace)
115+
{
116+
return target;
117+
}
118+
112119
if(createNew)
113120
{
114121
//create a file in the right location

pdf-toolkit-repo/src/main/java/org/alfresco/extension/pdftoolkit/repo/action/executer/PDFAppendActionExecuter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ protected final void action(Action ruleAction, NodeRef actionedUponNodeRef, Node
209209
// Get a writer and prep it for putting it back into the
210210
// repo
211211
NodeRef destinationNode = createDestinationNode(fileName,
212-
(NodeRef)ruleAction.getParameterValue(PARAM_DESTINATION_FOLDER), actionedUponNodeRef);
212+
(NodeRef)ruleAction.getParameterValue(PARAM_DESTINATION_FOLDER), actionedUponNodeRef, false);
213213
writer = serviceRegistry.getContentService().getWriter(destinationNode, ContentModel.PROP_CONTENT, true);
214214

215215
writer.setEncoding(reader.getEncoding()); // original

pdf-toolkit-repo/src/main/java/org/alfresco/extension/pdftoolkit/repo/action/executer/PDFDeletePageActionExecuter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,8 @@ private void doDelete(Action action, NodeRef actionedUponNodeRef, ContentReader
105105
tempDir.mkdir();
106106

107107
Serializable providedName = action.getParameterValue(PARAM_DESTINATION_NAME);
108+
Boolean inplace = Boolean.valueOf(String.valueOf(action.getParameterValue(PARAM_INPLACE)));
109+
108110
String fileName = null;
109111
if(providedName != null)
110112
{
@@ -133,7 +135,7 @@ private void doDelete(Action action, NodeRef actionedUponNodeRef, ContentReader
133135
doc.close();
134136

135137
NodeRef destinationNode = createDestinationNode(fileName,
136-
(NodeRef)action.getParameterValue(PARAM_DESTINATION_FOLDER), actionedUponNodeRef);
138+
(NodeRef)action.getParameterValue(PARAM_DESTINATION_FOLDER), actionedUponNodeRef, inplace);
137139
writer = serviceRegistry.getContentService().getWriter(destinationNode, ContentModel.PROP_CONTENT, true);
138140

139141
writer.setEncoding(reader.getEncoding());

pdf-toolkit-repo/src/main/java/org/alfresco/extension/pdftoolkit/repo/action/executer/PDFEncryptionActionExecuter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,7 @@ protected final void action(Action ruleAction, NodeRef actionedUponNodeRef, Cont
220220
// get the parameters
221221
String userPassword = (String)options.get(PARAM_USER_PASSWORD);
222222
String ownerPassword = (String)options.get(PARAM_OWNER_PASSWORD);
223+
Boolean inplace = Boolean.valueOf(String.valueOf(options.get(PARAM_INPLACE)));
223224
int permissions = buildPermissionMask(options);
224225
int encryptionType = Integer.parseInt((String)options.get(PARAM_ENCRYPTION_LEVEL));
225226

@@ -245,7 +246,7 @@ protected final void action(Action ruleAction, NodeRef actionedUponNodeRef, Cont
245246

246247
// write out to destination
247248
NodeRef destinationNode = createDestinationNode(file.getName(),
248-
(NodeRef)ruleAction.getParameterValue(PARAM_DESTINATION_FOLDER), actionedUponNodeRef);
249+
(NodeRef)ruleAction.getParameterValue(PARAM_DESTINATION_FOLDER), actionedUponNodeRef, inplace);
249250
writer = serviceRegistry.getContentService().getWriter(destinationNode, ContentModel.PROP_CONTENT, true);
250251

251252
writer.setEncoding(actionedUponContentReader.getEncoding());

pdf-toolkit-repo/src/main/java/org/alfresco/extension/pdftoolkit/repo/action/executer/PDFInsertAtPageActionExecuter.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,8 @@ protected final void action(Action ruleAction, NodeRef actionedUponNodeRef, Cont
197197
tempDir.mkdir();
198198

199199
String fileName = options.get(PARAM_DESTINATION_NAME).toString();
200-
200+
Boolean inplace = Boolean.valueOf(String.valueOf(options.get(PARAM_INPLACE)));
201+
201202
PDDocument completePDF = (PDDocument)pdfs.get(0);
202203

203204
completePDF.save(tempDir + "" + File.separatorChar + fileName + FILE_EXTENSION);
@@ -222,7 +223,7 @@ protected final void action(Action ruleAction, NodeRef actionedUponNodeRef, Cont
222223
// Get a writer and prep it for putting it back into the
223224
// repo
224225
NodeRef destinationNode = createDestinationNode(file.getName(),
225-
(NodeRef)ruleAction.getParameterValue(PARAM_DESTINATION_FOLDER), actionedUponNodeRef);
226+
(NodeRef)ruleAction.getParameterValue(PARAM_DESTINATION_FOLDER), actionedUponNodeRef, inplace);
226227
writer = serviceRegistry.getContentService().getWriter(destinationNode, ContentModel.PROP_CONTENT, true);
227228

228229
writer.setEncoding(reader.getEncoding()); // original

pdf-toolkit-repo/src/main/java/org/alfresco/extension/pdftoolkit/repo/action/executer/PDFSignatureActionExecuter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,8 @@ protected void doSignature(Action ruleAction, NodeRef actionedUponNodeRef, Conte
213213
int locationX = getInteger(ruleAction.getParameterValue(PARAM_LOCATION_X));
214214
int locationY = getInteger(ruleAction.getParameterValue(PARAM_LOCATION_Y));
215215

216+
Boolean inplace = Boolean.valueOf(String.valueOf(ruleAction.getParameterValue(PARAM_INPLACE)));
217+
216218
File tempDir = null;
217219
ContentWriter writer = null;
218220
KeyStore ks = null;
@@ -282,7 +284,7 @@ else if (keyType.equalsIgnoreCase(KEY_TYPE_PKCS12))
282284

283285
//can't use BasePDFActionExecuter.getWriter here need the nodeRef of the destination
284286
NodeRef destinationNode = createDestinationNode(file.getName(),
285-
(NodeRef)ruleAction.getParameterValue(PARAM_DESTINATION_FOLDER), actionedUponNodeRef);
287+
(NodeRef)ruleAction.getParameterValue(PARAM_DESTINATION_FOLDER), actionedUponNodeRef, inplace);
286288
writer = serviceRegistry.getContentService().getWriter(destinationNode, ContentModel.PROP_CONTENT, true);
287289

288290
writer.setEncoding(actionedUponContentReader.getEncoding());

pdf-toolkit-repo/src/main/java/org/alfresco/extension/pdftoolkit/repo/action/executer/PDFSplitActionExecuter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ protected final void action(Action ruleAction, NodeRef actionedUponNodeRef, Cont
248248
// Get a writer and prep it for putting it back into the
249249
// repo
250250
NodeRef destinationNode = createDestinationNode(file.getName(),
251-
(NodeRef)ruleAction.getParameterValue(PARAM_DESTINATION_FOLDER), actionedUponNodeRef);
251+
(NodeRef)ruleAction.getParameterValue(PARAM_DESTINATION_FOLDER), actionedUponNodeRef, false);
252252
writer = serviceRegistry.getContentService().getWriter(destinationNode, ContentModel.PROP_CONTENT, true);
253253

254254
writer.setEncoding(reader.getEncoding()); // original

pdf-toolkit-repo/src/main/java/org/alfresco/extension/pdftoolkit/repo/action/executer/PDFSplitAtPageActionExecuter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ protected final void action(Action ruleAction, NodeRef actionedUponNodeRef, Cont
283283
// Get a writer and prep it for putting it back into the
284284
// repo
285285
NodeRef destinationNode = createDestinationNode(file.getName(),
286-
(NodeRef)ruleAction.getParameterValue(PARAM_DESTINATION_FOLDER), actionedUponNodeRef);
286+
(NodeRef)ruleAction.getParameterValue(PARAM_DESTINATION_FOLDER), actionedUponNodeRef, false);
287287
writer = serviceRegistry.getContentService().getWriter(destinationNode, ContentModel.PROP_CONTENT, true);
288288

289289
writer.setEncoding(reader.getEncoding()); // original

0 commit comments

Comments
 (0)