Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 3.65 KB | None | 0 0
  1. package smc.plugin.form;
  2.  
  3. import java.io.File;
  4. import java.util.HashMap;
  5.  
  6. import org.slf4j.Logger;
  7. import org.slf4j.LoggerFactory;
  8. import org.w3c.dom.Document;
  9. import org.w3c.dom.Element;
  10. import org.w3c.dom.NodeList;
  11.  
  12. import smc.broker.plugin.IVersionablePO;
  13. import smc.broker.plugin.PluginObjectFactory;
  14. import smc.broker.util.BrokerContext;
  15. import smc.broker.util.FolderUtils;
  16. import smc.transform.core.ClassBasedTrafo;
  17. import smc.transform.core.Plugin;
  18. import smc.transform.core.PluginException;
  19. import smc.util.Constants;
  20. import smc.util.Context;
  21. import smc.util.XMLHandler;
  22. import smc.xml.xpath.XPath;
  23.  
  24. public class ProcessFieldDocuments implements ClassBasedTrafo {
  25.     private static final Logger log = LoggerFactory
  26.     .getLogger(ProcessFieldDocuments.class);
  27.  
  28.    
  29.  
  30.     public Document getDocument(Document sourceDoc,
  31.             HashMap<String, String> params, Context context)
  32.             throws PluginException {
  33.         HashMap<String, String> trafos = new HashMap<String, String>();
  34.         String language = params.get("language");
  35.         String objType = params.get("objType");
  36.         String uri = params.get("uri");
  37.         String hardcodedFile = "fileriskdoc.xml";
  38.         log.info("URI: "+uri);
  39.        
  40.         //filter object type to get document from form.project only
  41.         if (objType.equals("form.project")) {
  42.             BrokerContext bcontext = (BrokerContext) context;
  43.             Plugin  docPlugin = bcontext.getTransformerRepository().getPlugin("form");
  44.             String path = new StringBuilder().append(docPlugin.getLocation()).append(File.separatorChar)
  45.             .append("config").append(File.separatorChar).append(hardcodedFile).toString();
  46.             log.info("fileLocation: " + path);
  47.            
  48.  
  49.             try {
  50.                 //get the fields we need documents
  51.                 Document doc =  XMLHandler.readDocument(path);
  52.                 if(doc!=null){
  53.                     loadFieldsTrafo(doc, trafos);
  54.                     // get all fields from document
  55.                     NodeList fieldList = XPath.selectNodeList(sourceDoc,
  56.                             "/Note/Field");
  57.                     for (int i = 0; i < fieldList.getLength(); i++) {
  58.                         Element field = (Element)fieldList.item(i);
  59.                         String fieldName = field.getAttribute("name");
  60.                         String txt = field.getTextContent();
  61.                             log.info(fieldName);
  62.                             applyTrafo(trafos,uri, fieldName, txt, bcontext, language);
  63.                     }
  64.                 }
  65.             } catch (Exception e) {
  66.                 log.error("Error generating ACL", e);
  67.             }
  68.  
  69.         }
  70.         return sourceDoc;
  71.     }
  72.  
  73.     private void loadFieldsTrafo(Document doc, HashMap<String, String>trafos) {
  74.         NodeList fieldList = XPath.selectNodeList(doc,
  75.         "/Fields/Field");
  76.         for (int i = 0; i < fieldList.getLength(); i++) {
  77.             Element field = (Element)fieldList.item(i);
  78.             String fieldName = field.getAttribute("name");
  79.             String fieldTrafo = field.getAttribute("trafo");
  80.             trafos.put(fieldName, fieldTrafo);
  81.         }
  82.     }
  83.  
  84.     private void applyTrafo(HashMap<String, String>trafos, String uri, String docName,
  85.         String txt, BrokerContext bcontext, String language) {
  86.  
  87.         if(trafos.containsKey(docName)){
  88.             log.info("TRAFO: "+trafos.get(docName));
  89.             String folder = uri.substring(uri.lastIndexOf("/") + 1, uri.lastIndexOf("."));
  90.             String containerUri = uri.substring(0, uri.lastIndexOf("/"))+"/"+folder;
  91.             try {
  92.                 //check and create folder if it doesn't exist
  93.                 //The folder has the same name that the form               
  94.                 FolderUtils.mkFolders(containerUri, bcontext.getDataAPI(), bcontext.getCredentials());
  95.                 IVersionablePO po = PluginObjectFactory.getFileBasedPluginObject(Constants.OBJECT_TYPE_DOCUMENT, bcontext);
  96.                 if (!po.existsObject(containerUri, docName)){
  97.                     po.createObject(containerUri, docName, language, true);
  98.                 }
  99.                 //udate document with txt
  100.             } catch (Exception e) {
  101.                 log.error("Problem creating/updating document", e);
  102.             }          
  103.         }
  104.     }
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement