Page 1 of 1

como saber a que directorio pertenece un archivo

PostPosted:Fri May 29, 2015 4:08 pm
by diehx
Hola que tal? abro este hilo porque hice un automation para cambiar el nombre de los archivos que subo a openkm con un numero secuencial. funciona bien, ya esta probado. Ahora quiero discriminar el hecho de que lo haga para unas carpetas/directorios pero a otros no lo haga. he usado pathutil.getparent o file.getparentfile para saber en que directorio se esta guardando el archivo pero no me regresa el directorio y asi indicarle a travez de un IF para que no realice la operacion si esta en ciertas carpetas. Por su ayuda de antemano gracias

Re: como saber a que directorio pertenece un archivo

PostPosted:Sat May 30, 2015 6:39 am
by jllort
En el automation tienes el uuid del documento. Lo primero es obtener el path de ese uuid, despues sacamos la parte que se corresponde con la carpeta y finalmente el nombre de la carpeta.
Code: Select all
Strind docPath = OKMRepository.getInstance().getNodePath (null, uuid);
String fldPath = PathUtils.getParent(docPath);
String fldName = PathUtils.getName(fldPath);
Url relacionadas
http://doxygen.openkm.com/openkm/d0/dd8 ... older.html
http://doxygen.openkm.com/openkm/d0/dd8 ... older.html
http://doxygen.openkm.com/openkm/d8/d62 ... utils.html

Re: como saber a que directorio pertenece un archivo

PostPosted:Tue Jun 02, 2015 5:22 pm
by diehx
Gracias por el dato, lo verifique y funciona, pero no me doy cuenta que estoy haciendo mal, este es mi codigo para evitar entrar al script en caso de estar en alguna de esas dos carpetas que son nominas y mantenimiento.

//La siguiente linea no valida, que estoy haciendo mal? <<<>>>
if (fldName != "nominas" and fldName != "mantenimiento")

No hace la validacion y deja el nombre tal cual en cualquier carpeta sin discriminar, no pasa del IF
Enseguida el codigo completo del script
Code: Select all
import com.openkm.api.OKMPropertyGroup;
import com.openkm.api.OKMRepository;
import java.util.*;
import com.openkm.dao.DatabaseMetadataDAO;
import com.openkm.api.OKMDocument;

import com.openkm.util.PathUtils;
import com.openkm.util.FileUtils;

String grpName = "okg:autonumber";
String table = "autonumber";
String sequenceName = "doc_id";
String docPath = OKMRepository.getInstance().getNodePath (null, uuid);
String fldPath = PathUtils.getParent(docPath);
String fldName = PathUtils.getName(fldPath); 

//La siguiente linea no valida, que estoy haciendo mal?	<<<>>>
if (fldName != "nominas" and fldName != "mantenimiento") 
{
// Add Group
OKMPropertyGroup.getInstance().addGroup(null, docPath, grpName);
 
// Setting properties
String id = String.valueOf(DatabaseMetadataDAO.getNextSequenceValue(table, sequenceName));
 
switch (id.length()) {
    case 1:
    	id = "20150000" + id;
    	break;
    case 2:
    	id = "2015000" + id;
    	break;
    case 3:
    	id = "201500" + id;
    	break;
    case 4:
    	id = "20150" + id;
    	break;
    case 5:
    	id = "2015" + id;
    	break;

}
 
Map map = new HashMap();
map.put("okp:autonumber.id",id);
OKMPropertyGroup.getInstance().setPropertiesSimple(null, docPath, grpName, map);

// rename document
String newName = id +  "." + FileUtils.getFileExtension(PathUtils.getName(docPath));
OKMDocument.getInstance().rename(null, docPath, newName);
}

Re: como saber a que directorio pertenece un archivo

PostPosted:Thu Jun 04, 2015 5:04 pm
by diehx
Lo siento, jejeje, ya vi el error, los operadores logicos son caracteres y no palabras, AND es && y OR es ||
es el problema de estar ocupando mas de un lenguaje a la vez. gracias, saludos :D

Re: como saber a que directorio pertenece un archivo

PostPosted:Sat Jun 06, 2015 10:47 am
by jllort
Te recomendamos para realizar desarrollos y test utilizar otro entorno, nuestra recomendación es que utilices el https://sourceforge.net/projects/openkmportabledev/ donde ya viene todo configurado y ahora mismo es la opción más sencilla.