All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.semanticwb.model.DojoFileUpload Maven / Gradle / Ivy

/*
 * SemanticWebBuilder es una plataforma para el desarrollo de portales y aplicaciones de integración,
 * colaboración y conocimiento, que gracias al uso de tecnología semántica puede generar contextos de
 * información alrededor de algún tema de interés o bien integrar información y aplicaciones de diferentes
 * fuentes, donde a la información se le asigna un significado, de forma que pueda ser interpretada y
 * procesada por personas y/o sistemas, es una creación original del Fondo de Información y Documentación
 * para la Industria INFOTEC, cuyo registro se encuentra actualmente en trámite.
 *
 * INFOTEC pone a su disposición la herramienta SemanticWebBuilder a través de su licenciamiento abierto al público (‘open source’),
 * en virtud del cual, usted podrá usarlo en las mismas condiciones con que INFOTEC lo ha diseñado y puesto a su disposición;
 * aprender de él; distribuirlo a terceros; acceder a su código fuente y modificarlo, y combinarlo o enlazarlo con otro software,
 * todo ello de conformidad con los términos y condiciones de la LICENCIA ABIERTA AL PÚBLICO que otorga INFOTEC para la utilización
 * del SemanticWebBuilder 4.0.
 *
 * INFOTEC no otorga garantía sobre SemanticWebBuilder, de ninguna especie y naturaleza, ni implícita ni explícita,
 * siendo usted completamente responsable de la utilización que le dé y asumiendo la totalidad de los riesgos que puedan derivar
 * de la misma.
 *
 * Si usted tiene cualquier duda o comentario sobre SemanticWebBuilder, INFOTEC pone a su disposición la siguiente
 * dirección electrónica:
 *  http://www.semanticwebbuilder.org
 */
package org.semanticwb.model;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.semanticwb.Logger;
import org.semanticwb.SWBPlatform;
import org.semanticwb.SWBRuntimeException;
import org.semanticwb.SWBUtils;
import org.semanticwb.platform.SemanticLiteral;
import org.semanticwb.platform.SemanticObject;
import org.semanticwb.platform.SemanticProperty;
import org.semanticwb.util.UploadFileRequest;
import org.semanticwb.util.UploadedFile;
import org.semanticwb.util.UploaderFileCacheUtils;

public class DojoFileUpload extends org.semanticwb.model.base.DojoFileUploadBase {

    /** The log. */
    private static Logger log = SWBUtils.getLogger(DojoFileUpload.class);

    /**
     * Instantiates a new dojo file upload.
     *
     * @param base the base
     */
    public DojoFileUpload(org.semanticwb.platform.SemanticObject base) {
        super(base);
    }

    /* (non-Javadoc)
     * @see org.semanticwb.model.FileUpload#renderElement(HttpServletRequest, SemanticObject, SemanticProperty, String, String, String)
     */
    @Override
    public String renderElement(HttpServletRequest request, SemanticObject obj,
            SemanticProperty prop, String propName, String type, String mode, String lang) {
//        System.out.println("********************** DojoFileUploader.renderElement **********************");
//        System.out.println("obj: "+obj);
//        System.out.println("objuri: "+obj.getURI());
//        System.out.println("prop: "+prop);
//        System.out.println("type: "+type);
//        System.out.println("mode: "+mode);
//        System.out.println("lang: "+lang);
//        System.out.println("objcls: "+obj.getSemanticClass());
//        System.out.println("propcls: "+prop.getDomainClass());
        if (null == obj) {
            throw new SWBRuntimeException("No Semantic Object present");
        }

        String pname = getPropertyName(prop, obj, propName);

        String frmname = null;
        if (mode.equals("create")) {
            frmname = prop.getDomainClass().getURI();
        } else {
            frmname = obj.getURI();
        }
        frmname = frmname + "/form";


        StringBuilder buffer = new StringBuilder();
        String cad = UploaderFileCacheUtils.uniqueCad();
        UploadFileRequest ufq = configFileRequest(prop, pname);
        UploaderFileCacheUtils.putRequest(cad, ufq);
        request.getSession(true).setAttribute("fuCad", cad);
//        String page;
//        if (obj.instanceOf(WebPage.sclass)) {
//            page = obj.getId();
//        } else {
//            page = ((WebSite) obj.getModel().getModelObject().getGenericInstance()).getHomePage().getId();
//        }
        WebSite site;
        String url = SWBPlatform.getContextPath() + "/multiuploader/" + obj.getModel().getModelObject().getId() + "/home/" + cad;
//        String enviar = lang.equals("en") ? "You have to send the selected files first" : "Debe enviar primero los archivos seleccionados";
        String eliminar = lang.equals("en") ? "Chose the files to delete" : "Selecione el(los) archivo(s) a eliminar";
        String loading = lang.equals("en") ? "Uploading file, please wait..." : "Cargando archivo, por favor espere...";
        String done = lang.equals("en") ? "Upload succesful" : "La carga del(los) archivo(s) tuvo éxito";
        String error = lang.equals("en") ? "There was an error, try again please." : "Ocurrió un error, intente nuevamente.";

        if (!"view".equals(mode)) {
            buffer.append("  ");
            
            buffer.append("");
            buffer.append("
\n"); if (!"create".equals(mode) && obj.getProperty(prop) != null) { String name = obj.getProperty(prop); if (name.startsWith(pname)) { name = name.substring(pname.length() + 1); } if (prop.getCardinality() == 1) { if ("edit".equals(mode)) { buffer.append("Eliminar: " + name + "\n"); } else { buffer.append(" " + name + ""); } } } buffer.append("\n"); UploaderFileCacheUtils.put(cad, new java.util.LinkedList()); if (!"create".equals(mode) && prop.getCardinality() != 1) { Iterator lista = obj.listLiteralProperties(prop); if (lista.hasNext()) { buffer.append(eliminar + ":
"); } } } else { if (obj.getProperty(prop) != null) { if (prop.getCardinality() == 1) { String name = obj.getProperty(prop); if (name.startsWith(pname)) { name = name.substring(pname.length() + 1); } buffer.append(" " + name + ""); } else { Iterator lista = obj.listLiteralProperties(prop); if (lista.hasNext()) { while (lista.hasNext()) { SemanticLiteral lit = lista.next(); String fname = lit.getString(); String name = fname; if (fname.startsWith(pname)) { name = fname.substring(pname.length() + 1); } buffer.append(" " + name + ""); } } } } } //System.out.println(buffer.toString()); return buffer.toString(); } /** * Process. * * @param request the request * @param obj the obj * @param prop the prop */ @Override public void process(HttpServletRequest request, SemanticObject obj, SemanticProperty prop, String propName) { String pname = getPropertyName(prop, obj, propName); //MAPS74 - 01032011 Parche en caso de que en la forma no se haya rendereado la propiedad if (request.getParameter(pname + "_delFile") != null || request.getParameter(propName+"_new") != null || request.getParameter(pname ) != null) { // System.out.println("********************** FlashFileUploader.process **********************"); // System.out.println(request.getParameter(pname + "_delFile")); if (request.getParameter(pname + "_delFile") != null) { if (prop.getCardinality() != 1) { Iterator list = obj.listLiteralProperties(prop); String[] params = request.getParameterValues(pname + "_delFile"); for (String valor : params) { //System.out.println("Del:"+valor); delfile(obj, pname + "_" + valor); obj.removeLiteralProperty(prop, new SemanticLiteral(pname+"_"+valor)); } } else { delfile(obj, pname + "_" + request.getParameter(pname + "_delFile")); obj.removeProperty(prop); } } String destpath = UploaderFileCacheUtils.getHomepath() + "/" + obj.getWorkPath(); File dir = new File(destpath); if (!dir.exists() && !dir.mkdirs()) { throw new SWBRuntimeException("Can't create work directory " + dir); } String cad = request.getParameter(propName+"_new"); if (cad==null) cad = request.getParameter(pname); // System.out.println("Cadena:"+cad); List lista = UploaderFileCacheUtils.get(cad); for (UploadedFile arch : lista) { File orig = new File(arch.getTmpuploadedCanonicalFileName()); String webpath = obj.getWorkPath() + arch.getOriginalName(); File dest = new File(dir, pname + "_" + arch.getOriginalName()); if (!orig.renameTo(dest)) { try { SWBUtils.IO.copy(orig.getCanonicalPath(), dest.getCanonicalPath(), false, null, null); } catch (IOException ex) { throw new SWBRuntimeException("Can't copy files", ex); } } if (prop.getCardinality() != 1) { obj.addLiteralProperty(prop, new SemanticLiteral(pname + "_" + arch.getOriginalName())); } else { obj.setProperty(prop, pname + "_" + arch.getOriginalName()); } } UploaderFileCacheUtils.clean(cad); } } /** * Config file request. * * @param pname the property name * @return the upload file request */ protected UploadFileRequest configFileRequest(SemanticProperty prop, String pname) { // System.out.println("********************** FlashFileUploader.configFileRequest **********************"); // System.out.println("Tengo filtro "+getFileFilter()+"|--"); // System.out.println("*Prop:"+pname); // System.out.println("*FileMaxSize:"+getFileMaxSize()); boolean multiple = prop.getCardinality() != 1; //System.out.println("filter:"+getFileFilter()); HashMap filtros = new HashMap(); if (null == getFileFilter() || "".equals(getFileFilter())) { filtros.put("All Files", "*.*"); } else { String[] cads = getFileFilter().split("\\|"); for (String line : cads) { // System.out.println("cadena:"+line); String[] parts = line.split(":"); filtros.put(parts[0], parts[1]); } } return new UploadFileRequest(filtros, multiple, getFileMaxSize()); } /** * Delfile. * * @param obj the obj * @param valor the valor */ protected void delfile(SemanticObject obj, String valor) { String destpath = UploaderFileCacheUtils.getHomepath() + "/" + obj.getWorkPath(); File dir = new File(destpath); File dest = new File(dir, valor); dest.delete(); } protected String getPropertyName(SemanticProperty prop, SemanticObject obj, String propName) { return propName + "_" + (obj.getId()==null?"new":obj.getId()); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy