Java tutorial
/** * Copyright (c) 2011-2014, OpenIoT * * This file is part of OpenIoT. * * OpenIoT 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, version 3 of the License. * * OpenIoT 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 OpenIoT. If not, see <http://www.gnu.org/licenses/>. * * Contact: OpenIoT mailto: info@openiot.eu */ package org.openiot.ui.request.definition.web.sparql.nodes.base; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang3.StringUtils; import org.openiot.commons.util.PropertyManagement; public abstract class AbstractSparqlNode implements Serializable { public static int DEPTH_SPACES = 2; public static String GRAPH_META_URI = ""; public static String GRAPH_DATA_URI = ""; private static final long serialVersionUID = 1L; private List<AbstractSparqlNode> scopedItems; private int depth = 0; static { PropertyManagement propertyManagement = new PropertyManagement(); GRAPH_META_URI = "<" + propertyManagement.getSchedulerLsmMetaGraph() + ">"; GRAPH_DATA_URI = "<" + propertyManagement.getSchedulerLsmDataGraph() + ">"; } public AbstractSparqlNode() { this.scopedItems = new ArrayList<AbstractSparqlNode>(); } protected boolean existsInScope(AbstractSparqlNode node) { for (AbstractSparqlNode child : scopedItems) { if (child.equals(node)) { return true; } } return false; } public AbstractSparqlNode appendToScope(AbstractSparqlNode node) { if (existsInScope(node)) { return node; } this.scopedItems.add(node); node.setDepth(depth + 1); return node; } public AbstractSparqlNode prependToScope(AbstractSparqlNode node) { if (existsInScope(node)) { return node; } this.scopedItems.add(0, node); node.setDepth(depth + 1); return node; } public void setDepth(int depth) { this.depth = depth; } public int getDepth() { return this.depth; } public void removeFromScope(AbstractSparqlNode node) { this.scopedItems.remove(node); } public int getChildrenCount() { return this.scopedItems.size(); } public List<String> generateChildren() { List<String> out = new ArrayList<String>(scopedItems.size()); for (AbstractSparqlNode child : scopedItems) { child.setDepth(depth + 1); String childBlock = child.generate(); if (childBlock != null && !childBlock.isEmpty()) { out.add(childBlock); } } return out; } public String generatePad(int padDepth) { return StringUtils.leftPad("", DEPTH_SPACES * padDepth); } public abstract String generate(); }