ContentElementImpl.java
/*
* #%L
* wcm.io
* %%
* Copyright (C) 2017 wcm.io
* %%
* 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.
* #L%
*/
package io.wcm.tooling.commons.contentpackagebuilder.element;
import java.util.LinkedHashMap;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
/**
* Implements {@link ContentElement}.
*/
public final class ContentElementImpl implements ContentElement {
private final String name;
private final Map<String, Object> properties;
private final Map<String, ContentElement> children = new LinkedHashMap<>();
/**
* @param name Element name
* @param properties Properties
*/
public ContentElementImpl(String name, Map<String, Object> properties) {
this.name = name;
this.properties = properties;
}
@Override
public String getName() {
return name;
}
@Override
public Map<String, Object> getProperties() {
return properties;
}
@Override
public Map<String, ContentElement> getChildren() {
return children;
}
@Override
public ContentElement getChild(String path) {
String childName = StringUtils.substringBefore(path, "/");
ContentElement child = children.get(childName);
if (child == null) {
return null;
}
String remainingPath = StringUtils.substringAfter(path, "/");
if (StringUtils.isEmpty(remainingPath)) {
return child;
}
else {
return child.getChild(remainingPath);
}
}
@Override
public String toString() {
return "[props=" + this.properties + ", children=" + this.children + "]";
}
}