org.apache.jackrabbit.standalone.cli.info.AbstractLsItems Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jackrabbit-standalone-components Show documentation
Show all versions of jackrabbit-standalone-components Show documentation
Jackrabbit components for Jackrabbit Standalone
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.jackrabbit.standalone.cli.info;
import java.util.Iterator;
import java.util.ResourceBundle;
import javax.jcr.Item;
import javax.jcr.Node;
import javax.jcr.Property;
import javax.jcr.PropertyType;
import javax.jcr.RepositoryException;
import org.apache.commons.chain.Context;
import org.apache.jackrabbit.standalone.cli.CommandException;
import org.apache.jackrabbit.standalone.cli.CommandHelper;
/**
* List items superclass
*/
public abstract class AbstractLsItems extends AbstractLs {
/** bundle */
private static ResourceBundle bundle = CommandHelper.getBundle();
/** name width */
private int nameWidth = 30;
/** node type width */
private int typeWidth = 15;
/**
* @param ctx
* the Context
* @return Iterator containing the Items to list
* @throws CommandException
* if an errors occurs
* @throws RepositoryException
* if the current Repository
throws a
* RepositoryException
*/
protected abstract Iterator getItems(Context ctx) throws CommandException,
RepositoryException;
/**
* {@inheritDoc}
*/
public final boolean execute(Context ctx) throws Exception {
int nodes = 0;
int properties = 0;
// header
int[] width = new int[] {
nameWidth, typeWidth, longWidth, longWidth, longWidth
};
String[] header = new String[] {
bundle.getString("word.name"), bundle.getString("word.type"),
bundle.getString("word.node"), bundle.getString("word.new"),
bundle.getString("word.modified")
};
// print header
PrintHelper.printRow(ctx, width, header);
// print separator
PrintHelper.printSeparatorRow(ctx, width, '-');
// nodes
Iterator iter = getItems(ctx);
int index = 0;
int maxItems = getMaxItems(ctx);
// Print nodes
while (iter.hasNext() && index < maxItems) {
Item i = (Item) iter.next();
String type = null;
// Show name or path
String name = null;
if (this.isPath()) {
name = i.getPath();
} else {
name = i.getName();
}
if (i.isNode()) {
nodes++;
// name
Node n = (Node) i;
if (!isPath() && n.getIndex() > 1) {
name = n.getName() + "[" + n.getIndex() + "]";
}
// type
type = n.getPrimaryNodeType().getName();
} else {
properties++;
type = PropertyType.nameFromValue(((Property) i).getType());
}
PrintHelper.printRow(ctx, width, new String[] {
name, type, Boolean.toString(i.isNode()),
Boolean.valueOf(i.isNew()).toString(),
Boolean.valueOf(i.isModified()).toString()
});
index++;
}
// Footer
printFooter(ctx, iter);
return false;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy