You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by lu...@apache.org on 2005/03/02 12:41:47 UTC

cvs commit: jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange LastAccessedMaintainer.java LastAccessedProperty.java package.html resource_kinds.xml

luetzkendorf    2005/03/02 03:41:47

  Modified:    src/webdav/server/org/apache/slide/webdav/util/properties/exchange
                        package.html resource_kinds.xml
  Added:       src/webdav/server/org/apache/slide/webdav/util/properties/exchange
                        LastAccessedMaintainer.java
                        LastAccessedProperty.java
  Log:
  support for lastaccessed property added
  
  Revision  Changes    Path
  1.2       +11 -3     jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/package.html
  
  Index: package.html
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/package.html,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- package.html	2 Feb 2005 17:19:35 -0000	1.1
  +++ package.html	2 Mar 2005 11:41:46 -0000	1.2
  @@ -41,6 +41,14 @@
       </configuration>
     </listener> 
       </pre>
  +
  +    <p>If you want to maintain a last accesses property (i.e. updated it if a resource is read) 
  +    you may register the corresponding maintainer:
  +    <pre>
  +  &lt;event classname="org.apache.slide.webdav.event.WebdavEvent" enable="true"/>
  +  &lt;listener classname="org.apache.slide.webdav.util.properties.exchange.LastAccessedMaintainer"/>
  +
  +    </pre>
       
     </body>
   </html>
  
  
  
  1.2       +7 -3      jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/resource_kinds.xml
  
  Index: resource_kinds.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/resource_kinds.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- resource_kinds.xml	2 Feb 2005 17:19:35 -0000	1.1
  +++ resource_kinds.xml	2 Mar 2005 11:41:46 -0000	1.2
  @@ -66,6 +66,10 @@
           </computer-configuration>
         </live-property>
   
  +      <live-property name="lastaccessed" protected="true"
  +        computer="org.apache.slide.webdav.util.properties.exchange.LastAccessedProperty">
  +      </live-property>
  +
       </live-properties>
   
     </resource-kind>
  
  
  
  1.1                  jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/LastAccessedMaintainer.java
  
  Index: LastAccessedMaintainer.java
  ===================================================================
  /*
   * $Header: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/LastAccessedMaintainer.java,v 1.1 2005/03/02 11:41:46 luetzkendorf Exp $
   * $Revision: 1.1 $
   * $Date: 2005/03/02 11:41:46 $
   *
   * ====================================================================
   *
   * Copyright 1999-2002 The Apache Software Foundation 
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   *
   */
  package org.apache.slide.webdav.util.properties.exchange;
  
  import java.util.Date;
  
  import org.apache.slide.common.Domain;
  import org.apache.slide.common.NamespaceAccessToken;
  import org.apache.slide.common.PropertyName;
  import org.apache.slide.content.Content;
  import org.apache.slide.content.NodeProperty;
  import org.apache.slide.content.NodeRevisionDescriptor;
  import org.apache.slide.content.NodeRevisionDescriptors;
  import org.apache.slide.event.VetoException;
  import org.apache.slide.webdav.event.WebdavAdapter;
  import org.apache.slide.webdav.event.WebdavEvent;
  import org.apache.slide.webdav.method.AbstractWebdavMethod;
  
  
  /**
   * Content event listener that updated the property <code>lastaccessed</code>
   * if the content is retrieved, i.e. the resource is read.
   */
  public class LastAccessedMaintainer extends WebdavAdapter
  {
      static final PropertyName PN_LAST_ACCESSED = 
          PropertyName.getPropertyName("lastaccessed", NodeProperty.SLIDE_NAMESPACE);
      
      
      private void setLastAccessed(WebdavEvent event) {
          AbstractWebdavMethod method = (AbstractWebdavMethod)event.getSource();
          
          
          NamespaceAccessToken nsaToken = method.getNamespaceAccessToken();
          Content content = nsaToken.getContentHelper();
          
          try {
              NodeRevisionDescriptors nrds = content.retrieve(
                      method.getSlideToken(), method.getRequestUri());
              NodeRevisionDescriptor nrd = content.retrieve(
                      method.getSlideToken(), nrds);
              
              nrd.setProperty(PN_LAST_ACCESSED, Long.toString((new Date()).getTime()));
              
              content.store(method.getSlideToken(), method.getRequestUri(), nrd, null);
          } catch (Exception e) {
              Domain.error("Error while updateing lastaccessed property", e);
          }
      }
  
      
      public void get(WebdavEvent event) throws VetoException
      {
          setLastAccessed(event);
      }
      public void checkin(WebdavEvent event) throws VetoException
      {
          setLastAccessed(event);
      }
      public void checkout(WebdavEvent event) throws VetoException
      {
          setLastAccessed(event);
      }
      public void copy(WebdavEvent event) throws VetoException
      {
          setLastAccessed(event);
      }
      public void label(WebdavEvent event) throws VetoException
      {
          setLastAccessed(event);
      }
      public void mkcol(WebdavEvent event) throws VetoException
      {
          setLastAccessed(event);
      }
      public void move(WebdavEvent event) throws VetoException
      {
          setLastAccessed(event);
      }
      public void propFind(WebdavEvent event) throws VetoException
      {
          setLastAccessed(event);
      }
      public void propPatch(WebdavEvent event) throws VetoException
      {
          setLastAccessed(event);
      }
      public void put(WebdavEvent event) throws VetoException
      {
          setLastAccessed(event);
      }
      public void versionControl(WebdavEvent event) throws VetoException
      {
          setLastAccessed(event);
      }
  }
  
  
  1.1                  jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/LastAccessedProperty.java
  
  Index: LastAccessedProperty.java
  ===================================================================
  /*
   * $Header: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/LastAccessedProperty.java,v 1.1 2005/03/02 11:41:46 luetzkendorf Exp $
   * $Revision: 1.1 $
   * $Date: 2005/03/02 11:41:46 $
   *
   * ====================================================================
   *
   * Copyright 1999-2002 The Apache Software Foundation 
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   *
   */
  package org.apache.slide.webdav.util.properties.exchange;
  
  import java.text.SimpleDateFormat;
  import java.util.Date;
  
  import org.apache.slide.common.NamespaceAccessToken;
  import org.apache.slide.common.PropertyName;
  import org.apache.slide.common.SlideException;
  import org.apache.slide.content.NodeProperty;
  import org.apache.slide.content.NodeRevisionDescriptor;
  import org.apache.slide.content.NodeRevisionDescriptors;
  import org.apache.slide.webdav.util.WebdavContext;
  import org.apache.slide.webdav.util.properties.AbstractComputedProperty;
  import org.apache.slide.webdav.util.resourcekind.ResourceKind;
  
  
  /**
   * @author Stefan L�tzkendorf
   */
  public class LastAccessedProperty extends AbstractComputedProperty
  {
  
      protected static final SimpleDateFormat DATE_FORMAT =
          //new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US);
          //new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); // same as createdate
          new SimpleDateFormat("dd/MM/yyyy HH:mm:ss a"); // 3/29/1999 1:30:00 PM
      
      /* 
       * @see org.apache.slide.webdav.util.properties.PropertyComputer#getPropertyName()
       */
      public PropertyName getPropertyName()
      {
          return Constants.PN_LASTACCESSED;
      }
  
      /* 
       * @see org.apache.slide.webdav.util.properties.PropertyComputer#computeValue(org.apache.slide.common.NamespaceAccessToken, org.apache.slide.content.NodeRevisionDescriptors, org.apache.slide.content.NodeRevisionDescriptor, org.apache.slide.webdav.util.resourcekind.ResourceKind, org.apache.slide.webdav.util.WebdavContext)
       */
      public Object computeValue(NamespaceAccessToken nsaToken,
              NodeRevisionDescriptors revisionDescriptors,
              NodeRevisionDescriptor revisionDescriptor,
              ResourceKind resourceKind, WebdavContext context)
              throws SlideException
      {
          Date lastAccessed = null;
          NodeProperty nodeProperty = revisionDescriptor.getProperty(
                  LastAccessedMaintainer.PN_LAST_ACCESSED);
          if (nodeProperty != null) {
              lastAccessed = new Date(Long.parseLong(nodeProperty.getValue().toString()));
              return DATE_FORMAT.format(lastAccessed);
          } else {
              return DATE_FORMAT.format(revisionDescriptor.getLastModifiedAsDate());
          }
      }
  }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org