Author: ghuber
Date: Mon Jan 6 11:01:35 2014
New Revision: 1555713
URL: http://svn.apache.org/r1555713
Log:
Fix media file add/move/delete refresh of parent folders. TODO rewrite.
Modified:
roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAMediaFileManagerImpl.java
roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.java
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileAdd.java
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileBase.java
roller/trunk/app/src/main/resources/ApplicationResources.properties
roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileAdd.jsp
Modified:
roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAMediaFileManagerImpl.java
URL:
http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAMediaFileManagerImpl.java?rev=1555713&r1=1555712&r2=1555713&view=diff
==============================================================================
---
roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAMediaFileManagerImpl.java
(original)
+++
roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAMediaFileManagerImpl.java
Mon Jan 6 11:01:35 2014
@@ -108,9 +108,19 @@ public class JPAMediaFileManagerImpl imp
MediaFileDirectory targetDir) throws WebloggerException {
for (MediaFileDirectory mediaFileDir : mediaFileDirs) {
+ // Refresh associated parent for changes
+ strategy.refresh(mediaFileDir.getParent());
mediaFileDir.setParent(targetDir);
this.strategy.store(mediaFileDir);
}
+
+ // Refresh associated parent for changes
+ roller.flush();
+ strategy.refresh(targetDir);
+ if (targetDir.getParent() != null) {
+ strategy.refresh(targetDir.getParent());
+ }
+
// update weblog last modified date. date updated by saveWebsite()
roller.getWeblogManager().saveWeblog(targetDir.getWeblog());
}
@@ -135,6 +145,15 @@ public class JPAMediaFileManagerImpl imp
}
// update weblog last modified date. date updated by saveWebsite()
roller.getWeblogManager().saveWeblog(targetDirectory.getWeblog());
+
+ // Refresh associated parent for changes
+ roller.flush();
+ if (moved.size() > 0) {
+ strategy.refresh(moved.get(0).getDirectory());
+ }
+
+ // Refresh associated parent for changes
+ strategy.refresh(targetDirectory);
}
/**
@@ -284,6 +303,9 @@ public class JPAMediaFileManagerImpl imp
return;
}
strategy.store(mediaFile);
+
+ // Refresh associated parent for changes
+ strategy.refresh(mediaFile.getDirectory());
// update weblog last modified date. date updated by saveWeblog()
roller.getWeblogManager().saveWeblog(weblog);
@@ -328,6 +350,9 @@ public class JPAMediaFileManagerImpl imp
cmgr.saveFileContent(mediaFile.getWeblog(), mediaFile.getId()
+ "_sm", new ByteArrayInputStream(baos.toByteArray()));
+
+ // Refresh associated parent for changes
+ strategy.refresh(mediaFile.getDirectory());
} catch (Exception e) {
log.debug("ERROR creating thumbnail", e);
@@ -341,6 +366,10 @@ public class JPAMediaFileManagerImpl imp
throws WebloggerException {
mediaFile.setLastUpdated(new Timestamp(System.currentTimeMillis()));
strategy.store(mediaFile);
+
+ // Refresh associated parent for changes
+ strategy.refresh(mediaFile.getDirectory());
+
// update weblog last modified date. date updated by saveWeblog()
roller.getWeblogManager().saveWeblog(weblog);
}
@@ -364,6 +393,9 @@ public class JPAMediaFileManagerImpl imp
throw new FileIOException(msgs.toString());
}
cmgr.saveFileContent(weblog, mediaFile.getId(), is);
+
+ // Refresh associated parent for changes
+ strategy.refresh(mediaFile.getDirectory());
if (mediaFile.isImageFile()) {
updateThumbnail(mediaFile);
@@ -526,6 +558,10 @@ public class JPAMediaFileManagerImpl imp
.getFileContentManager();
this.strategy.remove(mediaFile);
+
+ // Refresh associated parent for changes
+ strategy.refresh(mediaFile.getDirectory());
+
// update weblog last modified date. date updated by saveWeblog()
roller.getWeblogManager().saveWeblog(weblog);
@@ -902,8 +938,15 @@ public class JPAMediaFileManagerImpl imp
Set<MediaFileDirectory> dirs = dir.getChildDirectories();
for (MediaFileDirectory md : dirs) {
removeMediaFileDirectory(md);
+ // Refresh associated object
+ strategy.refresh(md);
}
this.strategy.remove(dir);
+
+ // Refresh associated parent
+ roller.flush();
+ strategy.refresh(dir.getParent());
+
}
public void removeMediaFileTag(String name, MediaFile entry)
@@ -916,10 +959,10 @@ public class JPAMediaFileManagerImpl imp
// Call back the entity to adjust its internal state
entry.onRemoveTag(name);
- // Remove it from database
+ // Refresh it from database
this.strategy.remove(tag);
- // Remove it from the collection
+ // Refresh it from the collection
it.remove();
}
}
Modified:
roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.java
URL:
http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.java?rev=1555713&r1=1555712&r2=1555713&view=diff
==============================================================================
---
roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.java
(original)
+++
roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.java
Mon Jan 6 11:01:35 2014
@@ -112,7 +112,19 @@ public class JPAPersistenceStrategy {
}
}
}
-
+ /**
+ * Refresh changes to the current object.
+ *
+ * @throws org.apache.roller.weblogger.WebloggerException on any error
+ */
+ public void refresh(Object clazz) throws WebloggerException {
+ try {
+ EntityManager em = getEntityManager(true);
+ em.refresh(clazz);
+ } catch (PersistenceException pe) {
+ throw new WebloggerException(pe);
+ }
+ }
/**
* Flush changes to the datastore, commit transaction, release em.
* @throws org.apache.roller.weblogger.WebloggerException on any error
Modified:
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileAdd.java
URL:
http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileAdd.java?rev=1555713&r1=1555712&r2=1555713&view=diff
==============================================================================
---
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileAdd.java
(original)
+++
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileAdd.java
Mon Jan 6 11:01:35 2014
@@ -93,6 +93,13 @@ public class MediaFileAdd extends MediaF
} catch (WebloggerException ex) {
log.error("Error looking up media file directory", ex);
+ } finally{
+ //flush
+ try {
+ WebloggerFactory.getWeblogger().flush();
+ } catch (WebloggerException e) {
+ //ignored
+ }
}
}
Modified:
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileBase.java
URL:
http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileBase.java?rev=1555713&r1=1555712&r2=1555713&view=diff
==============================================================================
---
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileBase.java
(original)
+++
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileBase.java
Mon Jan 6 11:01:35 2014
@@ -59,6 +59,7 @@ public class MediaFileBase extends UIAct
manager.removeMediaFile(getActionWeblog(), mediaFile);
// flush changes
WebloggerFactory.getWeblogger().flush();
+ WebloggerFactory.getWeblogger().release();
addMessage("mediaFile.delete.success");
} catch (WebloggerException e) {
log.error("Error deleting media file", e);
@@ -122,6 +123,7 @@ public class MediaFileBase extends UIAct
// flush changes
WebloggerFactory.getWeblogger().flush();
+ WebloggerFactory.getWeblogger().release();
addMessage("mediaFile.delete.success");
} catch (WebloggerException e) {
@@ -163,6 +165,7 @@ public class MediaFileBase extends UIAct
// flush changes
WebloggerFactory.getWeblogger().flush();
+ WebloggerFactory.getWeblogger().release();
addMessage("mediaFile.move.success");
} catch (WebloggerException e) {
Modified: roller/trunk/app/src/main/resources/ApplicationResources.properties
URL:
http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/ApplicationResources.properties?rev=1555713&r1=1555712&r2=1555713&view=diff
==============================================================================
--- roller/trunk/app/src/main/resources/ApplicationResources.properties
(original)
+++ roller/trunk/app/src/main/resources/ApplicationResources.properties Mon Jan
6 11:01:35 2014
@@ -1153,6 +1153,7 @@ MediaFile.error.search.empty=Please ente
MediaFile.error.search.noResults=No results found.
mediaFile.error.search.dirPathEmpty=Directory path is empty.
mediaFile.error.search.dirPathInvalid=Directory path is invalid.
+MediaFile.error.view=Error viewing directory.
mediaFile.error.view.dirNameEmpty=Directory name is empty.
mediaFile.error.view.dirNameInvalid=Directory name is invalid.
mediaFile.error.noneSelectedForMove=Please select one or more files to be
moved.
Modified: roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileAdd.jsp
URL:
http://svn.apache.org/viewvc/roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileAdd.jsp?rev=1555713&r1=1555712&r2=1555713&view=diff
==============================================================================
--- roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileAdd.jsp
(original)
+++ roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileAdd.jsp Mon
Jan 6 11:01:35 2014
@@ -70,6 +70,7 @@
<s:form id="entry" action="mediaFileAdd!save" method="POST"
enctype="multipart/form-data">
<s:hidden name="salt" />
<s:hidden name="weblog" />
+ <s:hidden name="directoryPath" />
<%-- ==================================================================
--%>
<%-- Title, category, dates and other metadata --%>
@@ -178,6 +179,7 @@
<br />
<div class="control">
<input type="submit" value='<s:text name="mediaFileAdd.upload" />'
name="upload" />
+ <s:submit value="%{getText('application.cancel')}"
action="mediaFileView" />
</div>
</s:form>