Page 1 of 1

Error CSV import metadata

PostPosted:Fri Mar 24, 2017 2:39 pm
by ahmadmoussa
Hola, Estoy tratando de importar metadatos a través de un archivo csv como se muestra en el ejemplo:
https://www.openkm.com/wiki/index.php/CSV_importer

Pero está sucediendo un error, el scriptng del openkm dice que el archivo no está en el directorio.

Error: bsh.TargetError: Sourced file: inline evaluation of: ``import java.io.Reader; import java.io.FileReader; import java.util.Iterator; . . . '' : Typed variable declaration : Object constructor : at Line: 34 : in file: inline evaluation of: ``import java.io.Reader; import java.io.FileReader; import java.util.Iterator; . . . '' : new FileReader ( csvFile ) Target exception: java.io.FileNotFoundException: C:/Users/ahmad/Desktop/metadata.csv (No existe el archivo o el directorio)

Re: Error CSV import metadata

PostPosted:Sat Mar 25, 2017 7:57 pm
by jllort
El error es bastante claro, te esta diciendo que este fichero no existe "C:/Users/ahmad/Desktop/metadata.csv"

Hace un par de semanas sacamos ya la nueva documentación de la community, por lo que en el foro os vamos a ir sugiriendo durante un tiempo empezar a utilizarla, en tu caso la url que te interesa es https://docs.openkm.com/kcenter/view/ok ... -file.html

Te aconsejo, que los scripts que tenemos en la web, los transformes a tareas de crontab ( podras debugarlas etc... ) para esto necesitaras el entorno de desarrollo portable, pero a la larga veras que es mucho mejor que funcionar con scripts. Dos url que te van a interesar:
https://docs.openkm.com/kcenter/view/ok ... b-job.html
https://sourceforge.net/projects/openkmportabledev/

Re: Error CSV import metadata

PostPosted:Tue Mar 28, 2017 3:26 pm
by ahmadmoussa
Sé que el error lo dice, mi problema es que el directorio es correcto, sin embargo, todavía da este error. He intentado cambiar el directorio, cambiar el nombre del archivo, e incluso entonces el error persiste.
Code: Select all
import java.io.FileReader;
import java.io.Reader;
import java.util.Iterator;
import java.util.List;
import java.util.Collection;
 
import com.googlecode.jcsv.CSVStrategy;
import com.googlecode.jcsv.reader.CSVReader;
import com.googlecode.jcsv.reader.internal.CSVReaderBuilder;
import com.googlecode.jcsv.reader.internal.DefaultCSVEntryParser;
 
import com.openkm.dao.bean.QueryParams;
import com.openkm.bean.QueryResult;
import com.openkm.api.OKMSearch;
import com.openkm.util.FileLogger;
import com.openkm.api.OKMPropertyGroup;
import com.openkm.util.PathUtils;
 
String grpName = "okg:metadata";
String FILE_LOG_NAME = "CSVLOG";
String META_PATH = "C:/Users/ahmad/Desktop";
String META_FILE_NAME = "metadata.csv";
int uniqueFileName = 0;
int valueColumn = 1;
 
// Format defintion
char delimiter = ',';
char quoteCharacter = '"';
char commentIndicator = '#';
boolean skipHeader = true;
boolean ignoreEmptyLines = true;
CSVStrategy strategy = new CSVStrategy(delimiter, quoteCharacter, commentIndicator, skipHeader, ignoreEmptyLines);

// File reader
Reader reader = new FileReader(META_PATH + META_FILE_NAME);

// CSV reader		
CSVReader csvParser = new CSVReaderBuilder(reader).strategy(strategy).entryParser(new DefaultCSVEntryParser()).build();
List data = csvParser.readAll();
int count = 1;
int countFound = 0;
int countNotDocument = 0;
int moreThanOneDocumentFound = 0;
int notFound = 0;
int noName = 0;
 
for (Iterator it = data.listIterator(); it.hasNext();) {
    String[] row = (String[]) it.next();
    String docPath = row[uniqueFileName];
    print(count + ">>>> " + docPath);
    
    if (docPath != null && !docPath.equals("")) {
        QueryParams queryParams = new QueryParams();
        queryParams.setDomain(QueryParams.DOCUMENT);
        queryParams.setName(PathUtils.getName(docPath));
        Collection results = OKMSearch.getInstance().find(null, queryParams);
 
        if (results.size() == 1) {
            QueryResult queryResult = (QueryResult) results.iterator().next();
            if (queryResult.getNode() != null && queryResult.getNode() instanceof Document) {
                print("found");
                countFound++;

                // Add Group
                OKMPropertyGroup.getInstance().addGroup(null, docPath, grpName);

                // Add metadata
                Map map = new HashMap();
                map.put("okp:metadata.value", row[valueColumn]);
                OKMPropertyGroup.getInstance().setPropertiesSimple(null, docPath, grpName, map);
            } else {
                print("error is not document");
                countNotDocument++;
            }
        } else if (results.size() > 1) {
            print("error more than one document found can not decide");
            moreThanOneDocumentFound++;
        } else {
            print("not found");
            notFound++;
        }
    } else {
        print("error document has no name");
        noName++;
    }

    print("</br>");
 
    //FileLogger.info(FILE_LOG_NAME, "Document name ''{0}'' to ''{1}''", row[0], row[posDocRevNo]);
    count++;
}
 
print("Total:" + count + "</br>");
print("Found:" + countFound + "</br>");
print("Error not document:" + countNotDocument + "</br>");
print("Error more then one document found:" + moreThanOneDocumentFound + "</br>");
print("Error not found:" + notFound + "</br>");
print("Error name empty:" + notFound + "</br>");

Re: Error CSV import metadata

PostPosted:Wed Mar 29, 2017 6:19 pm
by jllort
Mi consejo es que lo pongas dentro de una tarea de crontab para poder debugarlo:
https://docs.openkm.com/kcenter/view/ok ... b-job.html