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