Skip to content

Commit c0984ec

Browse files
Merge branch 'ehsavoie-feature-4609'
2 parents 6f09362 + 3940bc5 commit c0984ec

File tree

23 files changed

+788
-542
lines changed

23 files changed

+788
-542
lines changed

config-core/src/main/config/properties/org/silverpeas/util/attachment/multilang/attachment.properties

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ confirm.checkin.message=Voulez vous enregistrer vos modifications ?
4545

4646
CopyLink = Pour copier le lien vers ce fichier : Clique droit puis 'Copier le raccourci'
4747

48-
# A mettre \u00e0 jour dans le multilang general
48+
# A mettre \u00e0 jour dans le multilang general
4949
type = Type
5050
zip = Zipper
5151
uploadDate = T\u00e9l\u00e9charg\u00e9 le
@@ -68,7 +68,7 @@ attachment.warning.checkin.locked=Le fichier est encore ouvert en mode d'\u00e9d
6868

6969
attachment.xmlForm.Edit = Editer les informations compl\u00e9mentaires
7070
attachment.xmlForm.View = Plus...
71-
attachment.xmlForm.ToolTip = Informations compl\u00e9mentaires sur
71+
attachment.xmlForm.ToolTip = Informations compl\u00e9mentaires sur
7272
attachment.share = Partager ce fichier
7373

7474
attachment.checkOutAndDownload = R\u00e9server et t\u00e9l\u00e9charger
@@ -86,4 +86,14 @@ attachment.dialog.button.deleteAll = Tout supprimer
8686

8787
attachment.add = Ajouter un fichier...
8888
attachment.version.new = Nouvelle version
89-
attachment.version.actual = Derni\u00e8re version
89+
attachment.version.actual = Derni\u00e8re version
90+
91+
attachment.dialog.switch=Changer d'\u00e9tat
92+
attachment.switchState.toSimple=D\u00e9sactiver le suivi de versions
93+
attachment.switchState.toVersioned=Activer le suivi de versions
94+
attachment.switch.warning.simple=Voulez-vous d\u00e9sactiver le suivi de versions sur ce fichier ? Attention! Les versions pr\u00e9c\u00e9dentes seront d\u00e9finitivement supprim\u00e9es.
95+
attachment.switch.warning.versioned=Voulez-vous activer le suivi de versions sur ce fichier ?
96+
97+
attachment.switch.version.major=Utiliser la derni\u00e8re version publique
98+
attachment.switch.version.last=Utiliser la derni\u00e8re version
99+
switch-version-comment=Commentaires sur la version

config-core/src/main/config/properties/org/silverpeas/util/attachment/multilang/attachment_de.properties

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,21 +50,21 @@ confirm.checkin.message=Wollen Sie die \u00c4nderungen speichern?
5050

5151
CopyLink = Zum Kopieren des Links in diese Datei: Rechtsklick, dann 'Verkn\u00fcpfung kopieren'
5252

53-
# A mettre \u00e0 jour dans le multilang general
54-
modifier = \u00c4ndern
55-
supprimer = L\u00f6schen
53+
# A mettre \u00e0 jour dans le multilang general
54+
modifier = \u00c4ndern
55+
supprimer = L\u00f6schen
5656
fermer = Schliessen
57-
description = Beschreibung
57+
description = Beschreibung
5858
valider = OK
59-
annuler = Abbrechen
59+
annuler = Abbrechen
6060
retour = Zur\u00fcck
6161
type = Typ
6262
fichier = Datei
6363
ajouter = Hinzuf\u00fcgen
6464
zip = Zippen
6565
uploadDate = Heruntergeladen am
6666

67-
erreur = Fehler
67+
erreur = Fehler
6868

6969
lier = Verbinden
7070

@@ -78,7 +78,7 @@ attachment.notifUserLib = ist abgelaufen und wurde freigegeben
7878

7979
attachment.suppressionWhichTranslations = Die Datei Die Sie l\u00f6schen wollen hat mehrere \u00dcbersetzungen.<br/>Was m\u00f6chten Sie l\u00f6schen ?
8080

81-
attachment.suppressionConfirmation = Sind Sie sicher die Datei l\u00f6schen zu wollen
81+
attachment.suppressionConfirmation = Sind Sie sicher die Datei l\u00f6schen zu wollen
8282

8383
attachment.warning.checkin.locked=Die Datei ist noch im on-line Bearbeitungsmodus. <br/>Bitte schlie\u00dfen Sie sie bevor Sie diese freigeben k\u00f6nnen.
8484

@@ -94,4 +94,14 @@ attachment.dialog.button.deleteAll = Delete all
9494

9595
attachment.add = Add a file...
9696
attachment.version.new = Neue version
97-
attachment.version.actual = Neueste version
97+
attachment.version.actual = Neueste version
98+
99+
attachment.dialog.switch=Change state
100+
attachment.switchState.toSimple=Disable version tracking
101+
attachment.switchState.toVersioned=Enable version tracking
102+
attachment.switch.warning.simple=Do you want to disable version tracking on this file ? Caution! Previous versions will be permanently deleted.
103+
attachment.switch.warning.versioned=Do you want to enable version tracking on this file ?
104+
105+
attachment.switch.version.major=Use last public version
106+
attachment.switch.version.last=Use last version
107+
switch-version-comment=Version comments

config-core/src/main/config/properties/org/silverpeas/util/attachment/multilang/attachment_en.properties

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ Up = Move up
3535
Down = Move down
3636
checkIn = Unlock
3737
checkOut = Lock
38-
readOnly = Locked by
38+
readOnly = Locked by
3939
at = at
4040
until = until
4141

@@ -65,13 +65,13 @@ attachment.notifUserLib = has expired and was unlocked
6565

6666
attachment.suppressionWhichTranslations = The file you want to remove has several translations.<br/>Which translation(s) do you want to remove?
6767

68-
attachment.suppressionConfirmation = Are you sure to want to remove the file
68+
attachment.suppressionConfirmation = Are you sure to want to remove the file
6969

7070
attachment.warning.checkin.locked=The file is being edited online.<br/>Close it before releasing it.
7171

7272
attachment.xmlForm.Edit = Edit additional informations
7373
attachment.xmlForm.View = More...
74-
attachment.xmlForm.ToolTip = Additional informations about
74+
attachment.xmlForm.ToolTip = Additional informations about
7575
attachment.share = Share this file
7676
attachment.checkOutAndDownload = Lock and download
7777
attachment.checkOutAndEditOnline = Edit online
@@ -88,4 +88,14 @@ attachment.dialog.button.deleteAll = Delete all
8888

8989
attachment.add = Add a file...
9090
attachment.version.new = New version
91-
attachment.version.actual = Latest version
91+
attachment.version.actual = Latest version
92+
93+
attachment.dialog.switch=Change state
94+
attachment.switchState.toSimple=Disable version tracking
95+
attachment.switchState.toVersioned=Enable version tracking
96+
attachment.switch.warning.simple=Do you want to disable version tracking on this file ? Caution! Previous versions will be permanently deleted.
97+
attachment.switch.warning.versioned=Do you want to enable version tracking on this file ?
98+
99+
attachment.switch.version.major=Use last public version
100+
attachment.switch.version.last=Use last version
101+
switch-version-comment=Version comments

config-core/src/main/config/properties/org/silverpeas/util/attachment/multilang/attachment_fr.properties

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ confirm.checkin.message=Voulez vous enregistrer vos modifications ?
4545

4646
CopyLink = Pour copier le lien vers ce fichier : Clique droit puis 'Copier le raccourci'
4747

48-
# A mettre \u00e0 jour dans le multilang general
48+
# A mettre \u00e0 jour dans le multilang general
4949
type = Type
5050
zip = Zipper
5151
uploadDate = T\u00e9l\u00e9charg\u00e9 le
@@ -68,7 +68,7 @@ attachment.warning.checkin.locked=Le fichier est encore ouvert en mode d'\u00e9d
6868

6969
attachment.xmlForm.Edit = Editer les informations compl\u00e9mentaires
7070
attachment.xmlForm.View = Plus...
71-
attachment.xmlForm.ToolTip = Informations compl\u00e9mentaires sur
71+
attachment.xmlForm.ToolTip = Informations compl\u00e9mentaires sur
7272
attachment.share = Partager ce fichier
7373

7474
attachment.checkOutAndDownload = R\u00e9server et t\u00e9l\u00e9charger
@@ -86,4 +86,14 @@ attachment.dialog.button.deleteAll = Tout supprimer
8686

8787
attachment.add = Ajouter un fichier...
8888
attachment.version.new = Nouvelle version
89-
attachment.version.actual = Derni\u00e8re version
89+
attachment.version.actual = Derni\u00e8re version
90+
91+
attachment.dialog.switch=Changer d'\u00e9tat
92+
attachment.switchState.toSimple=D\u00e9sactiver le suivi de versions
93+
attachment.switchState.toVersioned=Activer le suivi de versions
94+
attachment.switch.warning.simple=Voulez-vous d\u00e9sactiver le suivi de versions sur ce fichier ? Attention! Les versions pr\u00e9c\u00e9dentes seront d\u00e9finitivement supprim\u00e9es.
95+
attachment.switch.warning.versioned=Voulez-vous activer le suivi de versions sur ce fichier ?
96+
97+
attachment.switch.version.major=Utiliser la derni\u00e8re version publique
98+
attachment.switch.version.last=Utiliser la derni\u00e8re version
99+
switch-version-comment=Commentaires sur la version

lib-core/src/main/java/org/silverpeas/attachment/AttachmentService.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,21 +23,23 @@
2323
*/
2424
package org.silverpeas.attachment;
2525

26-
import com.silverpeas.util.ForeignPK;
27-
import com.stratelia.webactiv.util.WAPrimaryKey;
28-
import org.silverpeas.attachment.model.DocumentType;
29-
import org.silverpeas.attachment.model.SimpleDocument;
30-
import org.silverpeas.attachment.model.SimpleDocumentPK;
31-
import org.silverpeas.attachment.model.UnlockContext;
32-
import org.silverpeas.search.indexEngine.model.FullIndexEntry;
33-
3426
import java.io.File;
3527
import java.io.InputStream;
3628
import java.io.OutputStream;
3729
import java.util.Date;
3830
import java.util.List;
3931
import java.util.Map;
4032

33+
import org.silverpeas.attachment.model.DocumentType;
34+
import org.silverpeas.attachment.model.SimpleDocument;
35+
import org.silverpeas.attachment.model.SimpleDocumentPK;
36+
import org.silverpeas.attachment.model.UnlockContext;
37+
import org.silverpeas.search.indexEngine.model.FullIndexEntry;
38+
39+
import com.silverpeas.util.ForeignPK;
40+
41+
import com.stratelia.webactiv.util.WAPrimaryKey;
42+
4143
/**
4244
*
4345
* @author ehugonnet
@@ -366,8 +368,11 @@ void updateAttachment(SimpleDocument document, InputStream content, boolean inde
366368
* created and the document becomes a document with a version history management. F
367369
*
368370
* @param pk the id of the document.
371+
* @param comment the comment of the versioned documetn if we are switching from simple to
372+
* versioned.
373+
* @return the pk to the document after is state change.
369374
*/
370-
public void changeVersionState(SimpleDocumentPK pk);
375+
public SimpleDocumentPK changeVersionState(SimpleDocumentPK pk, String comment);
371376

372377
/**
373378
* Find documents with the same name attached to the specified foreign id.

lib-core/src/main/java/org/silverpeas/attachment/SimpleDocumentService.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -382,13 +382,15 @@ public void updateAttachment(SimpleDocument document, boolean indexIt, boolean i
382382
document.getLanguage());
383383
repository.fillNodeName(session, document);
384384
repository.updateDocument(session, document);
385-
if (document.isOpenOfficeCompatible() && document.isReadOnly()) {
386-
// le fichier est renommé
387-
if (!oldAttachment.getFilename().equals(document.getFilename())) {
388-
webdavRepository.deleteAttachmentNode(session, oldAttachment);
389-
webdavRepository.createAttachmentNode(session, document);
390-
} else {
391-
webdavRepository.updateNodeAttachment(session, document);
385+
if (!oldAttachment.isVersioned()) {
386+
if (document.isOpenOfficeCompatible() && document.isReadOnly()) {
387+
// le fichier est renommé
388+
if (!oldAttachment.getFilename().equals(document.getFilename())) {
389+
webdavRepository.deleteAttachmentNode(session, oldAttachment);
390+
webdavRepository.createAttachmentNode(session, document);
391+
} else {
392+
webdavRepository.updateAttachment(session, document);
393+
}
392394
}
393395
}
394396
String userId = document.getUpdatedBy();
@@ -840,12 +842,13 @@ private void updateAttachment(Session session, SimpleDocument document, boolean
840842
}
841843

842844
@Override
843-
public void changeVersionState(SimpleDocumentPK pk) {
845+
public SimpleDocumentPK changeVersionState(SimpleDocumentPK pk, String comment) {
844846
Session session = null;
845847
try {
846848
session = BasicDaoFactory.getSystemSession();
847-
repository.changeVersionState(session, pk);
849+
SimpleDocumentPK updatedPk = repository.changeVersionState(session, pk, comment);
848850
session.save();
851+
return updatedPk;
849852
} catch (RepositoryException ex) {
850853
throw new AttachmentException(this.getClass().getName(), SilverpeasException.ERROR, "", ex);
851854
} catch (IOException ex) {

lib-core/src/main/java/org/silverpeas/attachment/repository/DocumentRepository.java

Lines changed: 62 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,16 @@
2323
*/
2424
package org.silverpeas.attachment.repository;
2525

26-
import com.silverpeas.jcrutil.BasicDaoFactory;
27-
import com.silverpeas.util.FileUtil;
28-
import com.silverpeas.util.StringUtil;
29-
import com.silverpeas.util.i18n.I18NHelper;
30-
import com.stratelia.silverpeas.silvertrace.SilverTrace;
31-
import com.stratelia.webactiv.util.DateUtil;
32-
import com.stratelia.webactiv.util.FileRepositoryManager;
33-
import com.stratelia.webactiv.util.WAPrimaryKey;
34-
import org.apache.commons.io.FileUtils;
35-
import org.silverpeas.attachment.model.DocumentType;
36-
import org.silverpeas.attachment.model.HistorisedDocument;
37-
import org.silverpeas.attachment.model.SimpleAttachment;
38-
import org.silverpeas.attachment.model.SimpleDocument;
39-
import org.silverpeas.attachment.model.SimpleDocumentPK;
40-
import org.silverpeas.util.jcr.NodeIterable;
41-
import org.silverpeas.util.jcr.PropertyIterable;
26+
import java.io.BufferedInputStream;
27+
import java.io.File;
28+
import java.io.IOException;
29+
import java.io.InputStream;
30+
import java.util.Calendar;
31+
import java.util.Collections;
32+
import java.util.Date;
33+
import java.util.HashSet;
34+
import java.util.List;
35+
import java.util.Set;
4236

4337
import javax.inject.Named;
4438
import javax.jcr.ItemNotFoundException;
@@ -60,16 +54,26 @@
6054
import javax.jcr.version.VersionHistory;
6155
import javax.jcr.version.VersionIterator;
6256
import javax.jcr.version.VersionManager;
63-
import java.io.BufferedInputStream;
64-
import java.io.File;
65-
import java.io.IOException;
66-
import java.io.InputStream;
67-
import java.util.Calendar;
68-
import java.util.Collections;
69-
import java.util.Date;
70-
import java.util.HashSet;
71-
import java.util.List;
72-
import java.util.Set;
57+
58+
import org.silverpeas.attachment.model.DocumentType;
59+
import org.silverpeas.attachment.model.HistorisedDocument;
60+
import org.silverpeas.attachment.model.SimpleAttachment;
61+
import org.silverpeas.attachment.model.SimpleDocument;
62+
import org.silverpeas.attachment.model.SimpleDocumentPK;
63+
import org.silverpeas.util.jcr.NodeIterable;
64+
import org.silverpeas.util.jcr.PropertyIterable;
65+
66+
import com.silverpeas.jcrutil.BasicDaoFactory;
67+
import com.silverpeas.util.FileUtil;
68+
import com.silverpeas.util.StringUtil;
69+
import com.silverpeas.util.i18n.I18NHelper;
70+
71+
import com.stratelia.silverpeas.silvertrace.SilverTrace;
72+
import com.stratelia.webactiv.util.DateUtil;
73+
import com.stratelia.webactiv.util.FileRepositoryManager;
74+
import com.stratelia.webactiv.util.WAPrimaryKey;
75+
76+
import org.apache.commons.io.FileUtils;
7377

7478
import static com.silverpeas.jcrutil.JcrConstants.*;
7579
import static javax.jcr.nodetype.NodeType.MIX_SIMPLE_VERSIONABLE;
@@ -323,22 +327,48 @@ public void deleteDocument(Session session, SimpleDocumentPK documentPk) throws
323327
*
324328
* @param session
325329
* @param documentPk the id of the document.
330+
* @param comment
326331
* @throws RepositoryException
327332
* @throws IOException
328333
*/
329-
public void changeVersionState(Session session, SimpleDocumentPK documentPk) throws
330-
RepositoryException, IOException {
334+
public SimpleDocumentPK changeVersionState(Session session, SimpleDocumentPK documentPk,
335+
String comment) throws RepositoryException, IOException {
331336
try {
332337
Node documentNode = session.getNodeByIdentifier(documentPk.getId());
338+
boolean versionedNode = documentNode.getParent() instanceof Version || converter.isVersioned(
339+
documentNode);
340+
Node parent = documentNode.getParent();
341+
if (parent instanceof Version) {
342+
Version selectedVersion = (Version) parent;
343+
VersionManager versionManager = documentNode.getSession().getWorkspace().getVersionManager();
344+
versionManager.restore(selectedVersion, true);
345+
documentNode = session.getNodeByIdentifier(selectedVersion.getContainingHistory()
346+
.getVersionableIdentifier());
347+
}
333348
if (!documentNode.isCheckedOut()) {
334349
checkoutNode(documentNode, null);
335350
}
336-
if (converter.isVersioned(documentNode)) {
351+
if (StringUtil.isDefined(comment)) {
352+
documentNode.setProperty(SLV_PROPERTY_COMMENT, comment);
353+
}
354+
SimpleDocument origin = converter.fillDocument(documentNode, I18NHelper.defaultLanguage);
355+
if (versionedNode) {
337356
removeHistory(documentNode);
338357
documentNode.removeMixin(MIX_SIMPLE_VERSIONABLE);
339358
documentNode.setProperty(SLV_PROPERTY_VERSIONED, false);
359+
documentNode.setProperty(SLV_PROPERTY_MAJOR, 0);
360+
documentNode.setProperty(SLV_PROPERTY_MINOR, 0);
361+
SimpleDocument target = converter.fillDocument(documentNode, I18NHelper.defaultLanguage);
362+
moveMultilangContent(origin, target);
363+
File currentDocumentDir = new File(target.getDirectoryPath(I18NHelper.defaultLanguage))
364+
.getParentFile();
365+
File[] contents = currentDocumentDir.getParentFile().listFiles();
366+
for (File versionDirectory : contents) {
367+
if (!versionDirectory.equals(currentDocumentDir)) {
368+
FileUtils.deleteDirectory(versionDirectory);
369+
}
370+
}
340371
} else {
341-
SimpleDocument origin = converter.fillDocument(documentNode, I18NHelper.defaultLanguage);
342372
documentNode.setProperty(SLV_PROPERTY_VERSIONED, true);
343373
documentNode.setProperty(SLV_PROPERTY_MAJOR, 1);
344374
documentNode.setProperty(SLV_PROPERTY_MINOR, 0);
@@ -349,8 +379,10 @@ public void changeVersionState(Session session, SimpleDocumentPK documentPk) thr
349379
moveMultilangContent(origin, target);
350380
versionManager.checkin(documentNode.getPath());
351381
}
382+
return new SimpleDocumentPK(documentNode.getIdentifier(), documentPk);
352383
} catch (ItemNotFoundException infex) {
353384
SilverTrace.info("attachment", "DocumentRepository.deleteDocument()", "", infex);
385+
return documentPk;
354386
}
355387
}
356388

0 commit comments

Comments
 (0)