Ir al contenido
Otras versiones

Cargando…

Crear su propio Version Number Adapter

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 org.hibernate.Session;
import com.openkm.dao.bean.NodeDocument;
import com.openkm.dao.bean.NodeDocumentVersion;
/**
* @author pavila
* @see PlainVersionNumerationAdapter
* @see BranchVersionNumerationAdapter
* @see MajorMinorVersionNumerationAdapter
* @see MajorMinorReleaseVersionNumerationAdapter
*/
public interface VersionNumerationAdapter {
final String qs = "from NodeDocumentVersion ndv where ndv.parent=:parent and ndv.name=:name";
/**
* Obtain the initial version number to be set when creating a new document
*
* @return This first version number.
*/
public String getInitialVersionNumber();
/**
* Calculate the next version number from a given one.
*
* @param session Hibernate session.
* @param nDoc Document which will increase the revision number.
* @param nDocVer Current document version node.
* @return The new calculated version numbering.
*/
public String getNextVersionNumber(Session session, NodeDocument nDoc, NodeDocumentVersion nDocVer, int increment);
}

Le sugerimos crear la nueva clase dentro del paquete com.openkm.vernum.

Método Tipo Descripción
getInitialVersionNumber() String Devuelve la primera versión de un documento nuevo.
Normalmente la primera versión será “1.0”.
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 org.hibernate.Query;
import org.hibernate.Session;
import com.openkm.core.Config;
import com.openkm.dao.bean.NodeDocument;
import com.openkm.dao.bean.NodeDocumentVersion;
public class PlainVersionNumerationAdapter implements VersionNumerationAdapter {
@Override
public String getInitialVersionNumber() {
return String.format(Config.VERSION_NUMERATION_FORMAT, 1);
}
@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);
}
}