Control de la versión de Java

Estoy usando docx4j para cargar, manipular y save files de Word. Todo funciona a la perfección, pero hay una cosa que no sé cómo implementarlo. Lo que quiero es algo así como un control de versiones, eso significa que si guarda un documento, será posible recuperar una versión anterior de este documento (por ejemplo, guardando solo el delta). Tal vez puedas describirlo que debería ser algo así como SVN o Git, donde puedes volver a una versión anterior de tus files. El problema es que no conozco ninguna posibilidad de darme count de eso. Así que espero que cualquiera de ustedes me pueda ayudar. Estaría bien si alguien al less conoce un package u otra cosa que pueda hacer esto con los files en general y no especialmente con los files docx. ¡Gracias por tu ayuda!

Editar: Lamento que mi pregunta sea imprecisa. Esta fue mi primera publicación aquí, en el futuro mejoraré;)

Creo que deberías usar Git para esto, encontré una API Java llamada JavaGit , por lo que puedes tener fácil acceso al repository. Con Git puede tener un repository local donde puede confirmar files y cambiar versiones. Si lo necesita, también puede empujar y extraer los datos a una location remota.

¡Mejor usar JGit como dijo Gian!

JGit es una implementación Java de Git que funcionará con pocas dependencies. Existen bibliotecas similares para SVN y CVS. La elaboración casera de un sistema de control de versiones es casi seguro una idea terrible, dada la existencia de soluciones de buena calidad.

Si desea implementar Java puro para el control de versiones de documentos, tal vez podría ir por: Jackrabbit

Preguntas similares ya se han hecho antes. La primera respuesta (marcada como correcta) en esta pregunta también se aplica a Jackrabbit: el uso de un sistema de control de versiones como respaldo de datos

La forma más simple posible sería usar herramientas diff y patch . Fueron utilizados como un núcleo de CVS. Supongo que le gustaría ejecutar su aplicación en Windows donde no están preinstaladas. No sé si sería fácil / cómodo usar las versiones de Windows de estas herramientas, pero siempre puedes intentar escribir una funcionalidad similar por tu count. Aquí puede encontrar un buen tutorial sobre cómo encontrar las diferencias entre los files y cómo aplicarles parches: http://tuts.pinehead.tv/2012/09/18/introduction-using-diff-and-patch/ Cuando conoce la funcionalidad, es bastante fácil para escribir algo similar por su count.

Esto puede ser algo complicado de implementar, por lo que no lo recomendaría.

No sé mucho sobre su entorno, pero si puede usar un repository de versiones disponible, se ahorrará mucho dolor. Puede intentar usar Git o SVN directamente, que puede ser la solución más simple para su caso de uso.

Sin embargo, dado que está hablando de files de MS Office, puede estar implementando alguna forma de herramienta de administración de documentos empresariales. En este caso, la especificación JCR está diseñada para proporcionar acceso a files en un repository, con control de versiones y otras características de metadatos. Aquí está la especificación .

El proyecto Apache Jackrabbit proporciona una implementación de código abierto de esta especificación, al igual que la versión para desarrolladores de Alfresco .

Elegir la solución correcta dependerá realmente de qué intentan hacer tus usuarios con estos files, de cómo se ve tu entorno de deployment (no trates de alojar Git en Windows, k?), Y cómo de personalizado es tu código base actual (Servlet estándar) contenedor? Java EE? rodado en casa?).

¡Buena suerte!