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:
Descripción de los métodos
Sección titulada «Descripción de los métodos»| 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;
/** */@PluginImplementationpublic 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); }}