Revision f22e4d5d
b/src/gr/ebs/gss/server/ejb/ExternalAPIBean.java | ||
---|---|---|
139 | 139 |
*/ |
140 | 140 |
private static Random random = new Random(); |
141 | 141 |
|
142 |
private void touchParentFolders(Folder folder, User modifiedBy, Date modificationDate) { |
|
143 |
Folder f = folder; |
|
144 |
while (f!=null) { |
|
145 |
AuditInfo ai = f.getAuditInfo(); |
|
146 |
ai.setModifiedBy(modifiedBy); |
|
147 |
ai.setModificationDate(modificationDate); |
|
148 |
f.setAuditInfo(ai); |
|
149 |
f = f.getParent(); |
|
150 |
} |
|
151 |
} |
|
152 |
|
|
142 | 153 |
@Override |
143 | 154 |
public FolderDTO getRootFolder(Long userId) throws ObjectNotFoundException { |
144 | 155 |
if (userId == null) |
... | ... | |
318 | 329 |
auditInfo.setModifiedBy(creator); |
319 | 330 |
auditInfo.setModificationDate(now); |
320 | 331 |
folder.setAuditInfo(auditInfo); |
332 |
touchParentFolders(folder, auditInfo.getModifiedBy(), auditInfo.getModificationDate()); |
|
321 | 333 |
|
322 | 334 |
if (parent != null) |
323 | 335 |
for (Permission p : parent.getPermissions()) { |
... | ... | |
368 | 380 |
removeSubfolderFiles(folder); |
369 | 381 |
parent.removeSubfolder(folder); |
370 | 382 |
dao.delete(folder); |
383 |
touchParentFolders(parent, user, new Date()); |
|
371 | 384 |
} |
372 | 385 |
|
373 | 386 |
/** |
... | ... | |
432 | 445 |
// Do the actual modification. |
433 | 446 |
folder.setName(folderName); |
434 | 447 |
dao.update(folder); |
448 |
touchParentFolders(folder, user, new Date()); |
|
435 | 449 |
return folder.getDTO(); |
436 | 450 |
} |
437 | 451 |
|
... | ... | |
599 | 613 |
for (final FileBody body : file.getBodies()) |
600 | 614 |
deleteActualFile(body.getStoredFilePath()); |
601 | 615 |
dao.delete(file); |
616 |
touchParentFolders(parent, user, new Date()); |
|
602 | 617 |
indexFile(fileId, true); |
603 | 618 |
} |
604 | 619 |
|
... | ... | |
626 | 641 |
|
627 | 642 |
final User user = dao.getEntityById(User.class, userId); |
628 | 643 |
final FileHeader fh = dao.getEntityById(FileHeader.class, fileHeaderId); |
644 |
final Folder parent = fh.getFolder(); |
|
645 |
if (parent == null) |
|
646 |
throw new ObjectNotFoundException("The specified file has no parent folder"); |
|
629 | 647 |
user.addTag(fh, tag); |
648 |
touchParentFolders(parent, user, new Date()); |
|
630 | 649 |
} |
631 | 650 |
|
632 | 651 |
/* (non-Javadoc) |
... | ... | |
646 | 665 |
if (fileId == null) |
647 | 666 |
throw new ObjectNotFoundException("No file specified"); |
648 | 667 |
FileHeader file = dao.getEntityById(FileHeader.class, fileId); |
668 |
final Folder parent = file.getFolder(); |
|
669 |
if (parent == null) |
|
670 |
throw new ObjectNotFoundException("The specified file has no parent folder"); |
|
671 |
|
|
649 | 672 |
User user = dao.getEntityById(User.class, userId); |
650 | 673 |
if (!file.hasWritePermission(user)) |
651 | 674 |
throw new InsufficientPermissionsException("User " + user.getId() + " cannot update file " + file.getName() + "(" + file.getId() + ")"); |
... | ... | |
668 | 691 |
while (st.hasMoreTokens()) |
669 | 692 |
new FileTag(user, file, st.nextToken().trim()); |
670 | 693 |
} |
694 |
touchParentFolders(parent, user, new Date()); |
|
671 | 695 |
|
672 | 696 |
// Re-index the file if it was modified. |
673 | 697 |
if (name != null || tagSet != null) |
... | ... | |
1083 | 1107 |
|
1084 | 1108 |
file.setDeleted(true); |
1085 | 1109 |
dao.update(file); |
1110 |
touchParentFolders(parent, user, new Date()); |
|
1086 | 1111 |
} |
1087 | 1112 |
|
1088 | 1113 |
@Override |
... | ... | |
1115 | 1140 |
throw new ObjectNotFoundException("No destination file name specified"); |
1116 | 1141 |
|
1117 | 1142 |
FileHeader file = dao.getEntityById(FileHeader.class, fileId); |
1143 |
Folder source = file.getFolder(); |
|
1118 | 1144 |
Folder destination = dao.getEntityById(Folder.class, destId); |
1119 | 1145 |
|
1120 | 1146 |
User owner = dao.getEntityById(User.class, userId); |
... | ... | |
1148 | 1174 |
} |
1149 | 1175 |
// move the file to the destination folder |
1150 | 1176 |
file.setFolder(destination); |
1177 |
touchParentFolders(source, owner, new Date()); |
|
1178 |
touchParentFolders(destination, owner, new Date()); |
|
1151 | 1179 |
} |
1152 | 1180 |
|
1153 | 1181 |
@Override |
... | ... | |
1212 | 1240 |
|
1213 | 1241 |
file.setDeleted(false); |
1214 | 1242 |
dao.update(file); |
1243 |
touchParentFolders(parent, user, new Date()); |
|
1215 | 1244 |
} |
1216 | 1245 |
|
1217 | 1246 |
@Override |
... | ... | |
1226 | 1255 |
throw new InsufficientPermissionsException("You don't have the necessary permissions"); |
1227 | 1256 |
folder.setDeleted(true); |
1228 | 1257 |
dao.update(folder); |
1258 |
touchParentFolders(folder, user, new Date()); |
|
1229 | 1259 |
for (FileHeader file : folder.getFiles()) |
1230 | 1260 |
moveFileToTrash(userId, file.getId()); |
1231 | 1261 |
for (Folder subFolder : folder.getSubfolders()) |
... | ... | |
1251 | 1281 |
for (Folder subFolder : folder.getSubfolders()) |
1252 | 1282 |
removeFolderFromTrash(userId, subFolder.getId()); |
1253 | 1283 |
dao.update(folder); |
1284 |
touchParentFolders(folder, user, new Date()); |
|
1254 | 1285 |
} |
1255 | 1286 |
|
1256 | 1287 |
@Override |
... | ... | |
1573 | 1604 |
} |
1574 | 1605 |
|
1575 | 1606 |
dao.update(file); |
1607 |
Folder parent = file.getFolder(); |
|
1608 |
touchParentFolders(parent, user, new Date()); |
|
1576 | 1609 |
} |
1577 | 1610 |
} |
1578 | 1611 |
|
... | ... | |
1835 | 1868 |
for (final FileBody body : file.getBodies()) |
1836 | 1869 |
filesToRemove.add(body.getStoredFilePath()); |
1837 | 1870 |
dao.delete(file); |
1871 |
touchParentFolders(parent, user, new Date()); |
|
1838 | 1872 |
} |
1839 | 1873 |
//then remove physical files if everything is ok |
1840 | 1874 |
for(String physicalFileName : filesToRemove) |
... | ... | |
1961 | 1995 |
deleteActualFile(body.getStoredFilePath()); |
1962 | 1996 |
header.getBodies().remove(body); |
1963 | 1997 |
|
1998 |
Folder parent = header.getFolder(); |
|
1999 |
touchParentFolders(parent, user, new Date()); |
|
1964 | 2000 |
|
1965 | 2001 |
} |
1966 | 2002 |
|
... | ... | |
2009 | 2045 |
} |
2010 | 2046 |
header.getCurrentBody().setVersion(1); |
2011 | 2047 |
|
2048 |
Folder parent = header.getFolder(); |
|
2049 |
touchParentFolders(parent, user, new Date()); |
|
2012 | 2050 |
} |
2013 | 2051 |
|
2014 | 2052 |
/* (non-Javadoc) |
... | ... | |
2028 | 2066 |
if(header.isVersioned()) |
2029 | 2067 |
removeOldVersions(userId, fileId); |
2030 | 2068 |
header.setVersioned(versioned); |
2031 |
|
|
2069 |
Folder parent = header.getFolder(); |
|
2070 |
touchParentFolders(parent, user, new Date()); |
|
2032 | 2071 |
} |
2033 | 2072 |
} |
2034 | 2073 |
|
... | ... | |
2243 | 2282 |
} catch (FileNotFoundException e) { |
2244 | 2283 |
throw new GSSIOException(e); |
2245 | 2284 |
} |
2285 |
touchParentFolders(parent, owner, new Date()); |
|
2246 | 2286 |
dao.flush(); |
2247 | 2287 |
indexFile(file.getId(), false); |
2248 | 2288 |
|
... | ... | |
2281 | 2321 |
} catch (FileNotFoundException e) { |
2282 | 2322 |
throw new GSSIOException(e); |
2283 | 2323 |
} |
2324 |
Folder parent = file.getFolder(); |
|
2325 |
touchParentFolders(parent, owner, new Date()); |
|
2284 | 2326 |
|
2285 | 2327 |
indexFile(fileId, false); |
2286 | 2328 |
return file.getDTO(); |
Also available in: Unified diff