Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (C) 2009 eXo Platform SAS.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
   * the License, or (at your option) any later version.
   *
   * This software is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
 package org.exoplatform.services.jcr.webdav.xml;
 
 
 import java.util.Map;
 import java.util.Set;
 
Created by The eXo Platform SARL.

Author(s):
Gennady Azarenkov
Version:
$Id: $
 
 
 {

   
logger.
 
    private static Log log = ExoLogger.getLogger("exo.jcr.component.webdav.PropstatGroupedRepresentation");

   
properties statuses.
 
    protected final Map<StringSet<HierarchicalProperty>> propStats;

   
properties names
 
    protected Set<QNamepropNames = null;

   
Boolean flag. Shows if only properties names are required (true) or properties and values (false).
 
    protected final boolean namesOnly;

   
resource.
 
    protected final Resource resource;

   
seesion.
 
    protected final Session session;

   

Parameters:
resource resource
propNames properties names
namesOnly Boolean flag. Shows if only properties names are required (true) or properties and values (false).
Throws:
javax.jcr.RepositoryException javax.jcr.RepositoryException
 
    public PropstatGroupedRepresentation(final Resource resourcefinal Set<QNamepropNamesboolean namesOnly,
       final Session sessionthrows RepositoryException
    {
       this. = session;
       this. = namesOnly;
       this. = resource;
       this. = new HashMap<StringSet<HierarchicalProperty>>();
 
      this. = propNames;
      if (propNames != null)
      {
         this. = new HashSet();
         Iterator<QNamepropertyNameIter = propNames.iterator();
         while (propertyNameIter.hasNext())
         {
            QName property = propertyNameIter.next();
            this..add(property);
         }
      }
   }
   public PropstatGroupedRepresentation(Resource resourceSet<QNamepropNamesboolean namesOnly)  throws RepositoryException
   {
      this(resourcepropNamesnamesOnlynull);
   }

   
Returns properties statuses.

   {
      String statname = WebDavConst.getStatusDescription(.);
      if ( == null)
      {
         .put(statname.getProperties());
      }
      else
      {
         {
            .put(statname.getProperties());
         }
         for (QName propName : )
         {
            HierarchicalProperty prop = new HierarchicalProperty(propName);
            try
            {
               if (propName.equals(.) &&  != null)
               {
                  if (isReadOnly())
                  {
                     prop.setValue("1");
                  }
                  else
                  {
                     prop.setValue("0");
                  }
                  statname = WebDavConst.getStatusDescription(.);
               }
               else
               {
                  prop = .getProperty(propName);
                  statname = WebDavConst.getStatusDescription(.);
               }
            }
            catch (AccessDeniedException exc)
            {
               statname = WebDavConst.getStatusDescription(.);
               .error(exc.getMessage(), exc);
            }
            catch (ItemNotFoundException exc)
            {
               statname = WebDavConst.getStatusDescription(.);
            }
            catch (PathNotFoundException e)
            {
               statname = WebDavConst.getStatusDescription(.);
            }
            catch (RepositoryException e)
            {
               statname = WebDavConst.getStatusDescription(.);
            }
            if (!.containsKey(statname))
            {
               .put(statnamenew HashSet<HierarchicalProperty>());
            }
            Set<HierarchicalPropertypropSet = .get(statname);
            propSet.add(prop);
         }
      }
      return ;
   }
   private boolean isReadOnly()
   {
      String resourcePath = .getIdentifier().getPath();
      String workspace = .getWorkspace().getName();
      String path = resourcePath.substring(resourcePath.indexOf(workspace) + workspace.length());
      try
      {
         .checkPermission(path.);
      }
      catch (AccessControlException e1)
      {
         return false;
      }
      catch (RepositoryException e1)
      {
         return false;
      }
      // Node must not have any permission except "set_property" so checking for this permission 
      // must throw AccessControlException
      try
      {
         return false;
      }
      catch (AccessControlException e)
      {
         return true;
      }
      catch (RepositoryException e)
      {
         return false;
      }
   }
New to GrepCode? Check out our FAQ X