Skip to content
Snippets Groups Projects
Commit fbb0ee0e authored by srosse's avatar srosse
Browse files

OO-4310: make sure the deleted metadata are really deleted

parent b8c27d8a
No related branches found
No related tags found
No related merge requests found
...@@ -288,8 +288,16 @@ public class VFSMetadataDAO { ...@@ -288,8 +288,16 @@ public class VFSMetadataDAO {
.executeUpdate(); .executeUpdate();
} }
/**
* Update existing files only.
*
* @param fileSize The new file size (mandatory)
* @param lastModified The modification date (mandatory)
* @param relativePath The path to the file
* @param filename The name of the file
*/
public void updateMetadata(long fileSize, Date lastModified, String relativePath, String filename) { public void updateMetadata(long fileSize, Date lastModified, String relativePath, String filename) {
String updateQuery = "update vfsmetadatafilesaved set fileLastModified=:lastModified, fileSize=:fileSize where filename=:filename and relativePath=:relativePath"; String updateQuery = "update vfsmetadatafilesaved set fileLastModified=:lastModified, fileSize=:fileSize, deleted=false where filename=:filename and relativePath=:relativePath";
dbInstance.getCurrentEntityManager() dbInstance.getCurrentEntityManager()
.createQuery(updateQuery) .createQuery(updateQuery)
.setParameter("filename", filename) .setParameter("filename", filename)
......
...@@ -212,7 +212,7 @@ public class VFSRepositoryServiceImpl implements VFSRepositoryService, GenericEv ...@@ -212,7 +212,7 @@ public class VFSRepositoryServiceImpl implements VFSRepositoryService, GenericEv
VFSMetadata parent = getMetadataFor(file.getParentFile()); VFSMetadata parent = getMetadataFor(file.getParentFile());
metadata = metadataDao.createMetadata(uuid, relativePath, filename, new Date(), size, directory, uri, "file", parent); metadata = metadataDao.createMetadata(uuid, relativePath, filename, new Date(), size, directory, uri, "file", parent);
} else if(file.isFile() && file.length() != metadata.getFileSize()) { } else if(file.isFile() && (file.length() != metadata.getFileSize() || !file.exists() != metadata.isDeleted())) {
AsyncFileSizeUpdateEvent event = new AsyncFileSizeUpdateEvent(relativePath, filename); AsyncFileSizeUpdateEvent event = new AsyncFileSizeUpdateEvent(relativePath, filename);
coordinatorManager.getCoordinator().getEventBus().fireEventToListenersOf(event, fileSizeSubscription); coordinatorManager.getCoordinator().getEventBus().fireEventToListenersOf(event, fileSizeSubscription);
} }
......
...@@ -51,6 +51,8 @@ public class VFSMetadataFileSaved implements Persistable { ...@@ -51,6 +51,8 @@ public class VFSMetadataFileSaved implements Persistable {
private Date fileLastModified; private Date fileLastModified;
@Column(name="f_size", nullable=false, insertable=true, updatable=true) @Column(name="f_size", nullable=false, insertable=true, updatable=true)
private long fileSize; private long fileSize;
@Column(name="f_deleted", nullable=false, insertable=true, updatable=true)
private boolean deleted;
@Column(name="f_filename", nullable=false, insertable=false, updatable=false) @Column(name="f_filename", nullable=false, insertable=false, updatable=false)
private String filename; private String filename;
@Column(name="f_relative_path", nullable=false, insertable=false, updatable=false) @Column(name="f_relative_path", nullable=false, insertable=false, updatable=false)
...@@ -97,6 +99,14 @@ public class VFSMetadataFileSaved implements Persistable { ...@@ -97,6 +99,14 @@ public class VFSMetadataFileSaved implements Persistable {
this.relativePath = relativePath; this.relativePath = relativePath;
} }
public boolean isDeleted() {
return deleted;
}
public void setDeleted(boolean deleted) {
this.deleted = deleted;
}
@Override @Override
public int hashCode() { public int hashCode() {
return getKey().hashCode(); return getKey().hashCode();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment