Advertisement
Guest User

qweqweqwe

a guest
Nov 9th, 2018
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 24.84 KB | None | 0 0
  1. package ssc.servlets;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.lang.reflect.Constructor;
  6. import java.lang.reflect.Field;
  7. import java.lang.reflect.Type;
  8. import java.text.ParseException;
  9. import java.text.SimpleDateFormat;
  10. import java.util.ArrayList;
  11. import java.util.Arrays;
  12. import java.util.Date;
  13. import java.util.List;
  14.  
  15. import javax.faces.context.FacesContext;
  16. import javax.servlet.ServletException;
  17. import javax.servlet.ServletOutputStream;
  18. import javax.servlet.ServletRequest;
  19. import javax.servlet.ServletResponse;
  20. import javax.servlet.http.HttpServletRequest;
  21. import javax.servlet.http.HttpServletResponse;
  22.  
  23. import lotus.domino.Database;
  24. import lotus.domino.Document;
  25. import ssc.applications.hr.documents.PersonDocument;
  26. import ssc.applications.hr.documents.SchemeDocument;
  27. import ssc.applications.invoices.documents.invoice.InvoiceDocument;
  28. import ssc.applications.org.documents.EmploymentDocument;
  29. import ssc.applications.org.documents.ProposalDocument;
  30. import ssc.applications.scp.documents.overtimeProposal.OvertimeProposalDocument;
  31. import ssc.applications.scp.documents.reportTemplate.ReportTemplate;
  32. import ssc.applications.scp.documents.workSchedule.WorkScheduleDocument;
  33. import ssc.components.documents.PrimitiveDocument;
  34. import ssc.scripts.Scripts;
  35.  
  36. import com.google.gson.ExclusionStrategy;
  37. import com.google.gson.FieldAttributes;
  38. import com.google.gson.Gson;
  39. import com.google.gson.GsonBuilder;
  40. import com.google.gson.JsonDeserializationContext;
  41. import com.google.gson.JsonDeserializer;
  42. import com.google.gson.JsonElement;
  43. import com.google.gson.JsonParseException;
  44. import com.ibm.xsp.webapp.DesignerFacesServlet;
  45.  
  46. import floppy.Master;
  47.  
  48. public class DocumentsServlet extends DesignerFacesServlet
  49. {
  50.     private static final long serialVersionUID = 6907675674528143405L;
  51.     private String details1;
  52.  
  53.     @Override
  54.     @SuppressWarnings({ "static-access", "unchecked" })
  55.     public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException
  56.     {
  57.         System.out.println("================================DOCUMENT SERVLET START");
  58.         try
  59.         {
  60.             HttpServletRequest req      = (HttpServletRequest)servletRequest;
  61.             HttpServletResponse res     = (HttpServletResponse)servletResponse;
  62.             ServletOutputStream out     = res.getOutputStream();
  63.  
  64.             FacesContext context        = this.getFacesContext(req, res);
  65.  
  66.             String[] url = req.getPathInfo().split("/", 0);
  67.            
  68.             List<String> parameters = new ArrayList<String>(Arrays.asList(url));
  69.            
  70.             parameters.remove(0); parameters.remove(0); parameters.remove(0);
  71.  
  72.             String[] documentInfo = parameters.get(0).split("\\.");
  73.  
  74.             String tag                  = documentInfo[0];
  75.             String form                 = documentInfo[1];
  76.             String unid                 = documentInfo[2];
  77.             String action               = documentInfo[3];
  78.  
  79.             String details1             = ""; // wykorzystywane przy POST SAVE jako rodzaj poprzedniej akcji SAVE, SENDTOACCEPT, ACCCEPT/REJECT, VALIDATION
  80.             String details2             = "";
  81.  
  82.             if(documentInfo.length > 4)
  83.                 details1 = documentInfo[4];
  84.  
  85.             if(documentInfo.length > 5)
  86.                 details2 = documentInfo[5];
  87.            
  88.            
  89.             System.out.println("Url " + parameters);
  90.             System.out.println("tag: " + tag);
  91.             System.out.println("form: " + form);
  92.             System.out.println("unid: " + unid);
  93.             System.out.println("action: " + action);
  94.             System.out.println("details1: " + details1);
  95.             System.out.println("details2: " + details2);
  96.  
  97.  
  98.             if (action.equalsIgnoreCase(PrimitiveDocument.DOCUMENT_ACTION_NEW) || action.equalsIgnoreCase(PrimitiveDocument.DOCUMENT_ACTION_OPEN)) {
  99.                 Database db = Master.getDB(tag);
  100.                 Document doc;
  101.                
  102.                 if(action.equalsIgnoreCase(PrimitiveDocument.DOCUMENT_ACTION_OPEN) /*&& !(form.equalsIgnoreCase("Notatka"))*/)
  103.                     doc = db.getDocumentByUNID(unid);
  104.                 else
  105.                     doc = db.createDocument();
  106.  
  107.                 Constructor constructor = null;
  108.  
  109.                 if (tag.equalsIgnoreCase("faktury"))
  110.                 {
  111.                     if (form.equalsIgnoreCase("Dokument"))
  112.                     {
  113.                         constructor = getClass().forName("ssc.applications.invoices.documents.invoice.InvoiceDocument").getConstructor(Document.class);
  114.                     }
  115.                 }
  116.                 else if(tag.equalsIgnoreCase("scp"))
  117.                 {
  118.                     if (form.equalsIgnoreCase("harm"))
  119.                     {
  120.                         constructor = getClass().forName("ssc.applications.scp.documents.workSchedule.WorkScheduleDocument").getConstructor(Document.class);
  121.                     }
  122.                     else if (form.equalsIgnoreCase("WGN"))
  123.                     {
  124.                         constructor = getClass().forName("ssc.applications.scp.documents.overtimeProposal.OvertimeProposalDocument").getConstructor(Document.class);
  125.                     }
  126.                     else if (form.equalsIgnoreCase("RT"))
  127.                     {
  128.                         constructor = getClass().forName("ssc.applications.scp.documents.reportTemplate.ReportTemplate").getConstructor(Document.class);
  129.                     }
  130.                 }
  131.                 else if(tag.equalsIgnoreCase("hr"))
  132.                 {
  133.                     if (form.equalsIgnoreCase("hr"))
  134.                     {
  135.                         constructor = getClass().forName("ssc.applications.hr.documents.PersonDocument").getConstructor(Document.class);
  136.                     }
  137.                     else if (form.equalsIgnoreCase("scheme"))
  138.                     {
  139.                         constructor = getClass().forName("ssc.applications.hr.documents.SchemeDocument").getConstructor(Document.class);
  140.                     }
  141.                 } else if(tag.equalsIgnoreCase("org")) {
  142.                     if (form.equalsIgnoreCase("HR")) {
  143.                         constructor = getClass().forName("ssc.applications.org.documents.PersonDocument").getConstructor(Document.class);
  144.                        
  145.                     } else if (form.equalsIgnoreCase("Zatrudnienie")) {
  146.                         constructor = getClass().forName("ssc.applications.org.documents.EmploymentDocument").getConstructor(Document.class);
  147.                        
  148.                     } else if (form.equalsIgnoreCase("Wniosek")) {
  149.                         constructor = getClass().forName("ssc.applications.org.documents.ProposalDocument").getConstructor(Document.class);
  150.                        
  151.                     }
  152.                 }
  153.                 else if(tag.equalsIgnoreCase("urlopy")) {
  154.                     if (form.equalsIgnoreCase("Urlop")) {
  155.                         constructor = getClass().forName("ssc.applications.holidays.documents.ProposalDocument").getConstructor(Document.class);
  156.                     }
  157.                 } else if(tag.equalsIgnoreCase("korespondencja")) {
  158.                     if (form.equalsIgnoreCase("Dokument")) {
  159.                         constructor = getClass().forName("ssc.applications.correspondences.documents.CorrespondencesDocument").getConstructor(Document.class);
  160.                         }
  161.                 } else if(tag.equalsIgnoreCase("crm")) {
  162.                     if (form.equalsIgnoreCase("Firma")) {
  163.                         constructor = getClass().forName("ssc.applications.clients.documents.ContractorDocument").getConstructor(Document.class);
  164.                     } else if (form.equalsIgnoreCase("Osoba")) {
  165.                         constructor = getClass().forName("ssc.applications.clients.documents.ContactPersonDocument").getConstructor(Document.class);
  166.                     } else if (form.equalsIgnoreCase("Projekt")) {
  167.                         constructor = getClass().forName("ssc.applications.clients.documents.projects.ProjectDocument").getConstructor(Document.class);
  168.                     } else if (form.equalsIgnoreCase("PodProjekt")) {
  169.                         constructor = getClass().forName("ssc.applications.clients.documents.projects.SubProjectDocument").getConstructor(Document.class);
  170.                     } else if (form.equalsIgnoreCase("Notatka")) {
  171.                         constructor = getClass().forName("ssc.applications.clients.documents.NoteDocument").getConstructor(Document.class);
  172.                     } else if (form.equalsIgnoreCase("Telefon")) {
  173.                         constructor = getClass().forName("ssc.applications.clients.documents.PhoneCallDocument").getConstructor(Document.class);
  174.                     } else if(form.equalsIgnoreCase("Korespondencja")) {
  175.                         constructor = getClass().forName("ssc.applications.clients.documents.CorrespondenceDocument").getConstructor(Document.class);
  176.                     } else if(form.equalsIgnoreCase("Spotkanie")) {
  177.                         constructor = getClass().forName("ssc.applications.clients.documents.MeetingDocument").getConstructor(Document.class);
  178.                     }  else if(form.equalsIgnoreCase("Spotkanie_Raport")) {
  179.                         constructor = getClass().forName("ssc.applications.clients.documents.ReportDocument").getConstructor(Document.class);
  180.                     } else if(form.equalsIgnoreCase("Zapytanie")) {
  181.                         constructor = getClass().forName("ssc.applications.clients.documents.QuestionDocument").getConstructor(Document.class);
  182.                     } else if(form.equalsIgnoreCase("Oferta")) {
  183.                         constructor = getClass().forName("ssc.applications.clients.documents.OfferDocument").getConstructor(Document.class);
  184.                     }
  185.                 } else if(tag.equalsIgnoreCase("delegacje")) {
  186.                     if (form.equalsIgnoreCase("ZPW")) {
  187.                         constructor = getClass().forName("ssc.applications.delegations.documents.group.GroupProposalDocument").getConstructor(Document.class);
  188.                     } else if (form.equalsIgnoreCase("PW")) {
  189.                         constructor = getClass().forName("ssc.applications.delegations.documents.single.SingleProposalDocument").getConstructor(Document.class);
  190.                     }
  191.                 } else if(tag.equalsIgnoreCase("zaliczki")) {
  192.                     if (form.equalsIgnoreCase("WZ")) {
  193.                         constructor = getClass().forName("ssc.applications.advences.documents.ProposalDocument").getConstructor(Document.class);
  194.                     } else if (form.equalsIgnoreCase("RZ")) {
  195.                         constructor = getClass().forName("ssc.applications.advences.documents.SettlementDocument").getConstructor(Document.class);
  196.                     }
  197.                 }
  198.  
  199.                 if (constructor != null) {
  200.                    
  201.                     PrimitiveDocument obj = (PrimitiveDocument) constructor.newInstance(doc);
  202.                     obj.setFromWeb(true);
  203.  
  204.                     if (action.equalsIgnoreCase(PrimitiveDocument.DOCUMENT_ACTION_NEW)) {
  205.                         if (tag.equalsIgnoreCase("org") && form.equalsIgnoreCase("Zatrudnienie")) {
  206.                             ssc.applications.org.documents.EmploymentDocument employmentDoc = (ssc.applications.org.documents.EmploymentDocument) obj;
  207.                             employmentDoc.setParentUNID(details1);
  208.                             employmentDoc.setEmploymentUNID(details2);
  209.                         } else if (tag.equalsIgnoreCase("crm")) {
  210.                             if(form.equalsIgnoreCase("Osoba")) {
  211.                                 ssc.applications.clients.documents.ContactPersonDocument contractorDocument = (ssc.applications.clients.documents.ContactPersonDocument) obj;
  212.                                 contractorDocument.setParentUNID(details1);
  213.                             } else if (form.equalsIgnoreCase("Projekt")) {
  214.                                 ssc.applications.clients.documents.projects.ProjectDocument contractorDocument = (ssc.applications.clients.documents.projects.ProjectDocument) obj;
  215.                                 contractorDocument.setParentUNID(details1);
  216.                             } else if (form.equalsIgnoreCase("PodProjekt")) {
  217.                                 ssc.applications.clients.documents.projects.SubProjectDocument contractorDocument = (ssc.applications.clients.documents.projects.SubProjectDocument) obj;
  218.                                 contractorDocument.setParentUNID(details1);
  219.                             } else if (form.equalsIgnoreCase("Telefon")) {
  220.                                 ssc.applications.clients.documents.PhoneCallDocument phoneDocument = (ssc.applications.clients.documents.PhoneCallDocument) obj;
  221.                                 phoneDocument.setParentUNID(details1);
  222.                             } else if (form.equalsIgnoreCase("Notatka")) {
  223.                                 ssc.applications.clients.documents.NoteDocument noteDoc = (ssc.applications.clients.documents.NoteDocument) obj;                               
  224.                                 noteDoc.setParentUNID(details1);
  225.                                
  226.                             } else if (form.equalsIgnoreCase("Korespondencja")){
  227.                                 ssc.applications.clients.documents.CorrespondenceDocument correspondenceDocument = (ssc.applications.clients.documents.CorrespondenceDocument) obj;                            
  228.                                 correspondenceDocument.setParentUNID(details1);
  229.                             } else if (form.equalsIgnoreCase("Spotkanie")){
  230.                                 ssc.applications.clients.documents.MeetingDocument meetingDocument = (ssc.applications.clients.documents.MeetingDocument) obj;                             
  231.                                 meetingDocument.setParentUNID(details1);
  232.                             } else if (form.equalsIgnoreCase("Spotkanie_Raport")){
  233.                                 ssc.applications.clients.documents.ReportDocument reportDocument = (ssc.applications.clients.documents.ReportDocument) obj;                            
  234.                                 reportDocument.setParentUNID(details1);
  235.                             } else if (form.equalsIgnoreCase("Zapytanie")){
  236.                                 ssc.applications.clients.documents.QuestionDocument questionDocument = (ssc.applications.clients.documents.QuestionDocument) obj;                              
  237.                                 questionDocument.setParentUNID(details1);
  238.                             } else if (form.equalsIgnoreCase("Oferta")){
  239.                                 ssc.applications.clients.documents.OfferDocument offerDocument = (ssc.applications.clients.documents.OfferDocument) obj;                               
  240.                                 offerDocument.setParentUNID(details1);
  241.                             }
  242.                              
  243.                         }
  244.                        
  245.                         if(tag.equalsIgnoreCase("korespondencja")){
  246.                             ssc.applications.correspondences.documents.CorrespondencesDocument correspondencesDocument = (ssc.applications.correspondences.documents.CorrespondencesDocument) obj;
  247.                             if(details1.equalsIgnoreCase("in"))
  248.                             {
  249.                                 correspondencesDocument.setDirection("in");
  250.                             }
  251.                             else {
  252.                                 correspondencesDocument.setDirection("out");
  253.                             }
  254.                         }
  255.  
  256.                     }
  257.  
  258.                     if (action.equalsIgnoreCase(PrimitiveDocument.DOCUMENT_ACTION_OPEN)) {
  259.                         if (tag.equalsIgnoreCase("scp") && form.equalsIgnoreCase("harm")) {
  260.                            
  261.                         } else {
  262.                             obj.loadDataFromDocument();
  263.                         }
  264.  
  265.                     } else {
  266.                         obj.createDocument(true, true);
  267.                     }
  268.                    
  269.                    
  270.                     GsonBuilder gBuilder = getSenderGsonBuilder();
  271.                     Gson gson = gBuilder.create();                 
  272.                     out.write(gson.toJson(obj).getBytes("UTF-8"));
  273.                     res.setStatus(200);
  274.                 }
  275.  
  276.             } else if (
  277.                     action.equalsIgnoreCase(PrimitiveDocument.DOCUMENT_ACTION_SAVE) ||
  278.                     action.equalsIgnoreCase(PrimitiveDocument.DOCUMENT_ACTION_POSTSAVE) ||
  279.                     action.equalsIgnoreCase(PrimitiveDocument.DOCUMENT_ACTION_REMOVETOTRASH) ||
  280.                     action.equalsIgnoreCase(PrimitiveDocument.DOCUMENT_ACTION_SENDTOACCEPT) ||
  281.                     action.equalsIgnoreCase(PrimitiveDocument.DOCUMENT_ACTION_ACCEPTREJECTLEVELVALIDATION) ||
  282.                     action.equalsIgnoreCase(PrimitiveDocument.DOCUMENT_ACTION_ACCEPTREJECTLEVEL) ||
  283.                     action.equalsIgnoreCase(PrimitiveDocument.DOCUMENT_ACTION_VALIDATION) ||
  284.                     action.equalsIgnoreCase(PrimitiveDocument.DOCUMENT_ACTION_CHANGEORGANIZATIONUNIT) ||
  285.                     action.equalsIgnoreCase(PrimitiveDocument.DOCUMENT_ACTION_RELOADACCEPTPATH) ||
  286.                     action.equalsIgnoreCase(PrimitiveDocument.DOCUMENT_ACTION_CHANGEACCEPTPATH)
  287.                     ) {
  288.                
  289.                 GsonBuilder gBuilder =  getReciverGsonBuilder();
  290.                 Gson gson = gBuilder.create();
  291.  
  292.                 StringBuffer requestBody = new StringBuffer();
  293.                 String line = "";
  294.  
  295.                 try
  296.                 {
  297.                     BufferedReader reader = servletRequest.getReader();
  298.  
  299.                     while ((line = reader.readLine()) != null)
  300.                         requestBody.append(line);
  301.                 }
  302.                 catch (Exception e)
  303.                 {
  304.                     e.printStackTrace();
  305.                 }
  306.  
  307.                 PrimitiveDocument document = null;
  308.  
  309.                 if (tag.equalsIgnoreCase("faktury"))
  310.                 {
  311.                     if (form.equalsIgnoreCase("Dokument"))
  312.                     {
  313.                         document = gson.fromJson(requestBody.toString(), InvoiceDocument.class);
  314.                     }
  315.                 }
  316.                 else if(tag.equalsIgnoreCase("scp"))
  317.                 {
  318.                     if (form.equalsIgnoreCase("harm"))
  319.                     {
  320.                         document = gson.fromJson(requestBody.toString(), WorkScheduleDocument.class);
  321.                     }
  322.                     else if (form.equalsIgnoreCase("WGN"))
  323.                     {
  324.                         document = gson.fromJson(requestBody.toString(), OvertimeProposalDocument.class);
  325.                     }
  326.                     else if (form.equalsIgnoreCase("RT"))
  327.                     {
  328.                         document = gson.fromJson(requestBody.toString(), ReportTemplate.class);
  329.                     }
  330.                 }
  331.                 else if(tag.equalsIgnoreCase("hr"))
  332.                 {
  333.                     if (form.equalsIgnoreCase("hr"))
  334.                     {
  335.                         document = gson.fromJson(requestBody.toString(), PersonDocument.class);
  336.                     }
  337.                     if (form.equalsIgnoreCase("scheme"))
  338.                     {
  339.                         document = gson.fromJson(requestBody.toString(), SchemeDocument.class);
  340.                     }
  341.                 } else if(tag.equalsIgnoreCase("org")) {
  342.                     if (form.equalsIgnoreCase("HR")) {
  343.                         document = (PrimitiveDocument) gson.fromJson(requestBody.toString(), Class.forName("ssc.applications.org.documents.PersonDocument"));
  344.                     } else if (form.equalsIgnoreCase("Zatrudnienie")) {
  345.                         document = gson.fromJson(requestBody.toString(), EmploymentDocument.class);
  346.                     } else if (form.equalsIgnoreCase("Wniosek")) {
  347.                         document = gson.fromJson(requestBody.toString(), ProposalDocument.class);
  348.                     }
  349.                 }
  350.                 else if(tag.equalsIgnoreCase("urlopy"))
  351.                 {
  352.                     if (form.equalsIgnoreCase("Urlop"))
  353.                     {
  354.                         document = (PrimitiveDocument) gson.fromJson(requestBody.toString(), Class.forName("ssc.applications.holidays.documents.ProposalDocument"));
  355.                     }
  356.                 } else if(tag.equalsIgnoreCase("korespondencja")) {
  357.                     if (form.equalsIgnoreCase("Dokument")) {
  358.                         document = (PrimitiveDocument) gson.fromJson(requestBody.toString(), Class.forName("ssc.applications.correspondences.documents.CorrespondencesDocument"));
  359.                     }
  360.                 } else if(tag.equalsIgnoreCase("crm")) {
  361.                     if (form.equalsIgnoreCase("Firma")) {
  362.                         document = (PrimitiveDocument) gson.fromJson(requestBody.toString(), Class.forName("ssc.applications.clients.documents.ContractorDocument"));
  363.                     } else if (form.equalsIgnoreCase("Osoba")) {
  364.                         document = (PrimitiveDocument) gson.fromJson(requestBody.toString(), Class.forName("ssc.applications.clients.documents.ContactPersonDocument"));
  365.                     } else if (form.equalsIgnoreCase("Projekt")) {
  366.                         document = (PrimitiveDocument) gson.fromJson(requestBody.toString(), Class.forName("ssc.applications.clients.documents.projects.ProjectDocument"));
  367.                     } else if (form.equalsIgnoreCase("PodProjekt")) {
  368.                         document = (PrimitiveDocument) gson.fromJson(requestBody.toString(), Class.forName("ssc.applications.clients.documents.projects.SubProjectDocument"));
  369.                     } else if (form.equalsIgnoreCase("Notatka")) {
  370.                         document = (PrimitiveDocument) gson.fromJson(requestBody.toString(), Class.forName("ssc.applications.clients.documents.NoteDocument"));
  371.                     } else if (form.equalsIgnoreCase("Telefon")) {
  372.                         document = (PrimitiveDocument) gson.fromJson(requestBody.toString(), Class.forName("ssc.applications.clients.documents.PhoneCallDocument"));
  373.                     }  else if (form.equalsIgnoreCase("Korespondencja")) {
  374.                         document = (PrimitiveDocument) gson.fromJson(requestBody.toString(), Class.forName("ssc.applications.clients.documents.CorrespondenceDocument"));
  375.                     } else if (form.equalsIgnoreCase("Spotkanie")) {
  376.                         document = (PrimitiveDocument) gson.fromJson(requestBody.toString(), Class.forName("ssc.applications.clients.documents.MeetingDocument"));
  377.                     } else if (form.equalsIgnoreCase("Spotkanie_Raport")) {
  378.                         document = (PrimitiveDocument) gson.fromJson(requestBody.toString(), Class.forName("ssc.applications.clients.documents.ReportDocument"));
  379.                     } else if (form.equalsIgnoreCase("Zapytanie")) {
  380.                         document = (PrimitiveDocument) gson.fromJson(requestBody.toString(), Class.forName("ssc.applications.clients.documents.QuestionDocument"));
  381.                     } else if (form.equalsIgnoreCase("Oferta")) {
  382.                         document = (PrimitiveDocument) gson.fromJson(requestBody.toString(), Class.forName("ssc.applications.clients.documents.OfferDocument"));
  383.                     }
  384.                 } else if (tag.equalsIgnoreCase("delegacje")) {
  385.                     if (form.equalsIgnoreCase("ZPW")) {
  386.                         document = (PrimitiveDocument) gson.fromJson(requestBody.toString(), Class.forName("ssc.applications.delegations.documents.group.GroupProposalDocument"));
  387.                     } else if (form.equalsIgnoreCase("PW")) {
  388.                         document = (PrimitiveDocument) gson.fromJson(requestBody.toString(), Class.forName("ssc.applications.delegations.documents.single.SingleProposalDocument"));
  389.                     }
  390.                 } else if(tag.equalsIgnoreCase("zaliczki")) {
  391.                     if (form.equalsIgnoreCase("WZ")) {
  392.                         document = (PrimitiveDocument) gson.fromJson(requestBody.toString(), Class.forName("ssc.applications.advences.documents.ProposalDocument"));
  393.                     } else if (form.equalsIgnoreCase("RZ")) {
  394.                         document = (PrimitiveDocument) gson.fromJson(requestBody.toString(), Class.forName("ssc.applications.advences.documents.SettlementDocument"));
  395.                     }
  396.                 }
  397.  
  398.                 if (document != null) {
  399.                     // Ustawiamy zmienną swiadczącą że zmiana została wykonana z poziomu dokumentu
  400.                     document.setFromWeb(true);
  401.  
  402.                     if (!unid.equals("undefined")) {
  403.                         if (action.equalsIgnoreCase(PrimitiveDocument.DOCUMENT_ACTION_CHANGEACCEPTPATH)) {
  404.                             Database db = Master.getDB(tag, true, true);
  405.                             document.setDoc(db.getDocumentByUNID(unid));
  406.                         } else {
  407.                             Database db = Master.getDB(tag);
  408.                             document.setDoc(db.getDocumentByUNID(unid));
  409.                         }
  410.                     }
  411.  
  412.                     Boolean processed = false;
  413.                     if (action.equalsIgnoreCase(PrimitiveDocument.DOCUMENT_ACTION_SAVE)) {
  414.                         if (document.save()) {
  415.                             processed = true;
  416.                         }
  417.  
  418.                     } else if (action.equalsIgnoreCase(PrimitiveDocument.DOCUMENT_ACTION_POSTSAVE)) {
  419.                         document.postSave(details1);
  420.  
  421.                         // Po zapisie indeksujemy bazę
  422.                         document.getParentApplication().indexingDatabase();
  423.                        
  424.                     } else if (action.equalsIgnoreCase(PrimitiveDocument.DOCUMENT_ACTION_REMOVETOTRASH)) {
  425.                         document.removeToTrash(null, true, Scripts.getUser().getLotusName());
  426.                        
  427.                     } else if (action.equalsIgnoreCase(PrimitiveDocument.DOCUMENT_ACTION_SENDTOACCEPT)) {
  428.                         if (document.sendToAccept()) {
  429.                             processed = true;
  430.                         }
  431.  
  432.                     } else if (action.equalsIgnoreCase(PrimitiveDocument.DOCUMENT_ACTION_ACCEPTREJECTLEVELVALIDATION)) {
  433.                         if (document.acceptRejectLevel(true)) {
  434.                             processed = true;
  435.                         }
  436.  
  437.                     } else if (action.equalsIgnoreCase(PrimitiveDocument.DOCUMENT_ACTION_ACCEPTREJECTLEVEL)) {
  438.                         if (document.acceptRejectLevel(false)) {
  439.                             processed = true;
  440.                         }
  441.  
  442.                     } else if (action.equalsIgnoreCase(PrimitiveDocument.DOCUMENT_ACTION_VALIDATION)) {
  443.                         document.validation(details1.toUpperCase(), true);
  444.  
  445.                     } else if (action.equalsIgnoreCase(PrimitiveDocument.DOCUMENT_ACTION_CHANGEORGANIZATIONUNIT)) {
  446.                         document.changeOrganizationUnit();
  447.  
  448.                     } else if (action.equalsIgnoreCase(PrimitiveDocument.DOCUMENT_ACTION_RELOADACCEPTPATH)) {
  449.                         document.reloadAcceptPath();
  450.  
  451.                     } else if (action.equalsIgnoreCase(PrimitiveDocument.DOCUMENT_ACTION_CHANGEACCEPTPATH)) {
  452.                         document.changeAcceptPath();
  453.  
  454.                     }
  455.  
  456.                     if (processed) {
  457.  
  458.                         document.restart();
  459.  
  460.                         //PrimitiveDocument tmpDocument = PrimitiveDocument.getDocumentInstance(document.getApplicationTag(), document.getForm(), document.getUNID());
  461.                         //tmpDocument.loadDataFromDocument();
  462.  
  463.                     }
  464.  
  465.                     gBuilder = getSenderGsonBuilder();
  466.                     gson = gBuilder.create();
  467.  
  468.                     out.write(gson.toJson(document).getBytes("UTF-8"));
  469.  
  470.                     document.recycle();
  471.                     res.setStatus(200);
  472.                 }
  473.             }
  474.  
  475.             res.flushBuffer();
  476.             context.release();
  477.         }
  478.         catch(Exception e)
  479.         {
  480.             e.printStackTrace();
  481.         }
  482.         System.out.println("================================DOCUMENT SERVLET END");
  483.     }
  484.    
  485.     public String getDetails1()
  486.     {
  487.          //include validation, logic, logging or whatever you like here
  488.         return this.details1;
  489.     }
  490.    
  491.     private GsonBuilder getSenderGsonBuilder()
  492.     {
  493.         ExclusionStrategy strategy = new SpecificClassExclusionStrategy(Document.class);
  494.  
  495.         return new GsonBuilder()
  496.                   .addDeserializationExclusionStrategy(strategy)
  497.                   .excludeFieldsWithModifiers(java.lang.reflect.Modifier.TRANSIENT)
  498.                   .setDateFormat("yyyy-MM-dd'T'HH:mm:ss");
  499.     }
  500.  
  501.     private GsonBuilder getReciverGsonBuilder()
  502.     {
  503.         ExclusionStrategy strategy = new SpecificClassExclusionStrategy(Document.class);
  504.  
  505.         return new GsonBuilder()
  506.                   .addDeserializationExclusionStrategy(strategy)
  507.                   .registerTypeAdapter(Date.class, new DateDeserializer());
  508.                   //.registerTypeAdapter(Double.class, new DoubleDeserializer());
  509.     }
  510.  
  511.     private static class SpecificClassExclusionStrategy implements ExclusionStrategy
  512.     {
  513.         private final Class<?> excludedThisClass;
  514.  
  515.         public SpecificClassExclusionStrategy(Class<?> excludedThisClass)
  516.         {
  517.             this.excludedThisClass = excludedThisClass;
  518.         }
  519.  
  520.         public boolean shouldSkipClass(Class<?> clazz)
  521.         {
  522.             return excludedThisClass.equals(clazz);
  523.         }
  524.  
  525.         public boolean shouldSkipField(FieldAttributes f)
  526.         {
  527.             return excludedThisClass.equals(f.getDeclaredClass());
  528.         }
  529.     }
  530.  
  531.     private class DoubleDeserializer implements JsonDeserializer<Double>
  532.     {
  533.         public Double deserialize(JsonElement element, Type arg1, JsonDeserializationContext arg2) throws JsonParseException {
  534.  
  535.             String string = element.getAsString();
  536.             //System.out.println("DoubleDeserializer: " + string);
  537.  
  538.             return(Double.valueOf(string));
  539.         }
  540.     }
  541.  
  542.  
  543.     private class DateDeserializer implements JsonDeserializer<Date>
  544.     {
  545.         public Date deserialize(JsonElement element, Type arg1, JsonDeserializationContext arg2) throws JsonParseException
  546.         {
  547.  
  548.             String date = element.getAsString();
  549.  
  550.             SimpleDateFormat formatter = null;
  551.  
  552.             if (date.length() == 21) {
  553.                 formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
  554.             } else if (date.length() == 19) {
  555.                 formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
  556.                 date = date.replace(" ", "T");
  557.             } else if (date.length() == 10) {
  558.                 formatter = new SimpleDateFormat("yyyy-MM-dd");
  559.             } else if (date.length() == 5) {
  560.                 formatter = new SimpleDateFormat("HH:mm");
  561.             }
  562.  
  563.             if  (formatter != null) {
  564.                 try {
  565.                     //System.out.println(formatter.parse(date));
  566.                     return formatter.parse(date);
  567.                 } catch (ParseException e) {
  568.                     e.printStackTrace();
  569.                 }
  570.             }
  571.             return null;
  572.         }
  573.     }
  574. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement