blob: 2b36c3d7c5faa683cfc017acff194dcd11d9113e [file] [log] [blame]
/*
* 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.lenya.cms.site.simple;
import java.util.ArrayList;
import java.util.List;
import org.apache.avalon.framework.logger.Logger;
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.DocumentException;
import org.apache.lenya.cms.site.AbstractSiteNode;
import org.apache.lenya.cms.site.Link;
import org.apache.lenya.cms.site.SiteException;
import org.apache.lenya.cms.site.SiteNode;
/**
* Node for SimpleSiteManager.
*/
public class SimpleSiteNode extends AbstractSiteNode {
protected SimpleSiteNode(DocumentStore store, String path, String uuid, Logger logger) {
super(store.getPublication(), store, path, uuid, logger);
}
public Link getLink(String language) throws SiteException {
DocumentStore store = (DocumentStore) getStructure();
return new SimpleLink(store.getDelegate().getFactory(), this, "", language);
}
public String getName() {
String[] steps = getPath().split("/");
return steps[steps.length - 1];
}
public String[] getLanguages() {
DocumentStore store = (DocumentStore) getStructure();
List languages = new ArrayList();
Document[] docs;
try {
docs = store.getDocuments();
} catch (DocumentException e) {
throw new RuntimeException(e);
}
for (int i = 0; i < docs.length; i++) {
if (docs[i].getUUID().equals(getUuid())) {
if (languages.contains(docs[i].getLanguage())) {
throw new RuntimeException("Document [" + docs[i] + "] is contained twice!");
}
languages.add(docs[i].getLanguage());
}
}
return (String[]) languages.toArray(new String[languages.size()]);
}
public boolean isVisible() {
return true;
}
public void setVisible(boolean visibleInNav) {
}
public void delete() {
String[] languages = getLanguages();
for (int i = 0; i < languages.length; i++) {
try {
getLink(languages[i]).delete();
} catch (SiteException e) {
throw new RuntimeException(e);
}
}
}
public SiteNode[] getChildren() {
return new SiteNode[0];
}
public String getHref() {
return null;
}
public String getSuffix() {
return null;
}
public boolean hasLink() {
return false;
}
public SiteNode getParent() throws SiteException {
return null;
}
}