OpenProdocServ.ImportDocF.java Source code

Java tutorial

Introduction

Here is the source code for OpenProdocServ.ImportDocF.java

Source

/*
 * OpenProdoc
 * 
 * See the help doc files distributed with
 * this work for additional information regarding copyright ownership.
 * Joaquin Hierro licenses this file to You under:
 * 
 * License GNU GPL v3 http://www.gnu.org/licenses/gpl.html
 * 
 * you may not use this file except in compliance with the License.  
 * Unless agreed to in writing, software is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * 
 * author: Joaquin Hierro      2016
 * 
 */

package OpenProdocServ;

import OpenProdocUI.SParent;
import static OpenProdocUI.SParent.GetDat;
import static OpenProdocUI.SParent.getSessOPD;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.*;
import prodoc.DriverGeneric;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import prodoc.Attribute;
import prodoc.PDDocs;
import prodoc.PDMimeType;
import prodoc.Record;

/**
 *
 * @author jhierrot
 */
public class ImportDocF extends SParent {
    final static private String List = PDDocs.fPARENTID + "/" + PDDocs.fPDID + "/" + PDDocs.fPDAUTOR + "/"
            + PDDocs.fPDDATE + "/" + PDDocs.fLOCKEDBY + "/" + PDDocs.fVERSION + "/" + PDDocs.fPURGEDATE + "/"
            + PDDocs.fREPOSIT + "/" + PDDocs.fSTATUS;

    //-----------------------------------------------------------------------------------------------
    /**
     *
     * @param Req
     * @throws Exception
     */
    @Override
    protected void ProcessPage(HttpServletRequest Req, PrintWriter out) throws Exception {
        String FileName = null;
        InputStream FileData = null;
        HashMap<String, String> ListFields = new HashMap();
        try {
            DiskFileItemFactory factory = new DiskFileItemFactory();
            factory.setSizeThreshold(1000000);
            ServletFileUpload upload = new ServletFileUpload(factory);
            boolean isMultipart = ServletFileUpload.isMultipartContent(Req);
            List items = upload.parseRequest(Req);
            Iterator iter = items.iterator();
            while (iter.hasNext()) {
                FileItem item = (FileItem) iter.next();
                if (item.isFormField())
                    ListFields.put(item.getFieldName(), item.getString());
                else {
                    FileName = item.getName();
                    FileData = item.getInputStream();
                }
            }
            if (!isMultipart || FileData == null) {
                out.println("KO");
            } else {
                ListFields = GetDat(Req);
                PDDocs Doc;
                DriverGeneric PDSession = getSessOPD(Req);
                String DType = (String) ListFields.get(PDDocs.fDOCTYPE);
                if (DType == null)
                    Doc = new PDDocs(PDSession);
                else
                    Doc = new PDDocs(PDSession, DType);
                Record Rec = Doc.getRecSum();
                Rec.initList();
                Attribute Attr = Rec.nextAttr();
                while (Attr != null) {
                    if (!List.contains(Attr.getName())) {
                        String Val = (String) ListFields.get(Attr.getName());
                        if (Attr.getType() == Attribute.tBOOLEAN) {
                            if (Val == null || Val.length() == 0 || Val.equals("0"))
                                Attr.setValue(false);
                            else
                                Attr.setValue(true);
                        } else if (Val != null) {
                            SParent.FillAttr(Req, Attr, Val, false);
                        }
                    }
                    Attr = Rec.nextAttr();
                }
                Doc.assignValues(Rec);
                Doc.setParentId(ListFields.get("CurrFold"));
                Doc.setName(FileName);
                PDMimeType mt = new PDMimeType(PDSession);
                Doc.setMimeType(mt.SolveName(FileName));
                Doc.setStream(FileData);
                Doc.insert();
                out.println(UpFileStatus.SetResultOk(Req, ""));
                FileData.close();
            }
        } catch (Exception e) {
            out.println(UpFileStatus.SetResultKo(Req, e.getLocalizedMessage()));
            throw e;
        }
    }
    //-----------------------------------------------------------------------------------------------

    /**
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "ImportDocF Servlet";
    }

    //-----------------------------------------------------------------------------------------------
    static public String getUrlServlet() {
        return ("ImportDocF");
    }
    //-----------------------------------------------------------------------------------------------
}