/* * 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.frameworks.jcr.cli; import org.exoplatform.services.jcr.impl.core.NodeImpl; import org.exoplatform.services.jcr.impl.core.PropertyImpl; import java.util.Iterator; import javax.jcr.Item; import javax.jcr.Property; import javax.jcr.PropertyType; import javax.jcr.nodetype.ItemDefinition; import javax.jcr.nodetype.PropertyDefinition; /** * Created by The eXo Platform SAS * * @author Vitaliy Obmanjuk * @version $Id: $ */ public class GetContextInfoCommand extends AbstractCliCommand { public boolean perform(CliAppContext ctx) { StringBuilder output = new StringBuilder(); try { output.append("Context info: \n"); Item item = ctx.getCurrentItem(); ItemDefinition itemDefinition; if (item.isNode()) { itemDefinition = ((NodeImpl)item).getDefinition(); } else { itemDefinition = ((PropertyImpl)item).getDefinition(); } output.append("username: ").append(ctx.getUserName()).append("\n"); output.append("workspace: ").append(ctx.getCurrentWorkspace()).append("\n"); output.append("item path: ").append(item.getPath()).append("\n"); output.append("item type: ").append(item.isNode() ? "Node" : "Property").append("\n"); output.append("item definitions:\n"); output.append(" name: ").append(itemDefinition.getName()).append("\n"); output.append(" autocreated:").append(itemDefinition.isAutoCreated()).append("\n"); output.append(" mandatory:").append(itemDefinition.isMandatory()).append("\n"); output.append(" protected:").append(itemDefinition.isProtected()).append("\n"); output.append(" onparentversion:").append(itemDefinition.getOnParentVersion()).append("\n"); if (item.isNode() == false) { Property property = (Property)item; int propertyType = property.getValue().getType(); if (propertyType != (PropertyType.BINARY)) { PropertyDefinition propertyDefinition = (PropertyDefinition)itemDefinition; if (propertyDefinition.isMultiple() == false) { output.append("property value:").append(property.getValue().getString()).append("\n"); } else { output.append("property value is multiple\n"); } } else { output.append("can't show property value:\n"); } } output.append("parameters:\n"); Iterator parametersIterator = ctx.getParameters().iterator(); int i = 0; while (parametersIterator.hasNext()) { output.append(" [").append(i).append("] : ").append((String)parametersIterator.next()).append("\n"); i++; } } catch (Exception e) { output.append("Can't execute command - ").append(e.getMessage()).append("\n"); } ctx.setOutput(output.toString()); return false; } }