Ir al contenido
Otras versiones

Cargando…

Crear su propio adaptador de numeración de versiones

El adaptador de numeración de versiones lo utiliza la aplicación para establecer la lógica que controla el número de versión del documento cada vez que este se actualiza.

Para crear su propio adaptador de numeración de versiones debe crear una nueva clase que implemente la interfaz VersionNumerationAdapter:

package com.openkm.vernum;
import net.xeoh.plugins.base.Plugin;
import org.hibernate.Session;
import com.openkm.dao.bean.NodeDocument;
import com.openkm.dao.bean.NodeDocumentVersion;
/** *
*/
public interface VersionNumerationAdapter extends Plugin {
public final static int INCREASE_DEFAULT = 0;
public final static int INCREASE_MINOR = 1;
public final static int INCREASE_MAJOR = 2;
public final static int INCREASE_MAJOR_MINOR = 3;
final String qs = "from NodeDocumentVersion ndv where ndv.parent=:parent and ndv.name=:name";
public String getInitialVersionNumber();
public int getVersionNumberIncrement();
public String getNextVersionNumber(Session session, NodeDocument nDoc, NodeDocumentVersion nDocVer, int increment);
}

La nueva clase debe ubicarse en el paquete com.openkm.vernum, porque el sistema de plugins de la aplicación intentará cargarla desde allí. Vea el ejemplo siguiente:

Método Tipo Descripción
getInitialVersionNumber() String Devuelve la primera versión de un documento nuevo.
Normalmente la primera versión será “1.0”.
getVersionNumberIncrement() int Devuelve un número que indica las opciones de incremento disponibles.
Valores disponibles:
- VersionNumerationAdapter.INCREASE_DEFAULT
- VersionNumerationAdapter.INCREASE_MINOR
- VersionNumerationAdapter.INCREASE_MAJOR
- VersionNumerationAdapter.INCREASE_MAJOR_MINOR
INCREASE_NONE: no muestra ninguna opción; se incrementa por defecto.
INCREASE_MINOR: solo muestra la opción de incrementar la versión menor; si no se selecciona, se incrementa por defecto.
INCREASE_MAYOR: solo muestra la opción de incrementar la versión mayor; si no se selecciona, se incrementa por defecto.
INCREASE_MAJOR_MINOR: muestra las opciones de incrementar la versión mayor y la menor; si no se selecciona, se incrementa por defecto.
String getNextVersionNumber(Session session, NodeDocument nDoc, NodeDocumentVersion nDocVer, int increment)() String Calcula el siguiente número de versión a partir de uno dado

Ejemplo de implementación del adaptador de numeración de versiones

Sección titulada «Ejemplo de implementación del adaptador de numeración de versiones»
package com.openkm.vernum;
import net.xeoh.plugins.base.annotations.PluginImplementation;
import org.hibernate.Query;
import org.hibernate.Session;
import com.openkm.core.Config;
import com.openkm.dao.bean.NodeDocument;
import com.openkm.dao.bean.NodeDocumentVersion;
/**
*/
@PluginImplementation
public class PlainVersionNumerationAdapter implements VersionNumerationAdapter {
@Override
public String getInitialVersionNumber() {
return String.format(Config.VERSION_NUMERATION_FORMAT, 1);
}
@Override
public int getVersionNumberIncrement() {
return INCREASE_DEFAULT;
}
@Override
public String getNextVersionNumber(Session session, NodeDocument nDoc, NodeDocumentVersion nDocVer, int increment) {
String versionNumber = nDocVer.getName();
int nextVerNumber = Integer.parseInt(versionNumber);
Query q = session.createQuery(qs);
NodeDocumentVersion ndv = null;
do {
nextVerNumber++;
q.setString("parent", nDoc.getUuid());
q.setString("name", String.valueOf(nextVerNumber));
ndv = (NodeDocumentVersion) q.setMaxResults(1).uniqueResult();
} while (ndv != null);
return String.format(Config.VERSION_NUMERATION_FORMAT, nextVerNumber);
}
}