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>


Reply via email to