/*
* Copyright (c) 2012 Data Harmonisation Panel
*
* All rights reserved. This program and the accompanying materials are made
* available under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of the License,
* or (at your option) any later version.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this distribution. If not, see <http://www.gnu.org/licenses/>.
*
* Contributors:
* Data Harmonisation Panel <http://www.dhpanel.eu>
*/
package eu.esdihumboldt.hale.server.webtransform.war.components;
import java.util.ArrayList;
import java.util.List;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.spring.injection.annot.SpringBean;
import eu.esdihumboldt.hale.common.core.io.project.ProjectInfo;
import eu.esdihumboldt.hale.common.headless.EnvironmentService;
import eu.esdihumboldt.hale.common.headless.TransformationEnvironment;
import eu.esdihumboldt.hale.server.webtransform.war.pages.UploadPage;
/**
* Transformations list.
*
* @author Simon Templer
*/
public class TransformationList extends Panel {
private static final long serialVersionUID = -6939011129125355533L;
// private static final ALogger log = ALoggerFactory.getLogger(ProjectList.class);
@SpringBean
private EnvironmentService transformations;
/**
* Constructor
*
* @param id the panel id
* @param showCaption if the caption shall be shown
*/
public TransformationList(String id, boolean showCaption) {
super(id);
// transformations list
final IModel<? extends List<TransformationEnvironment>> transformationsModel = new LoadableDetachableModel<List<TransformationEnvironment>>() {
private static final long serialVersionUID = 7277175702043541004L;
@Override
protected List<TransformationEnvironment> load() {
return new ArrayList<TransformationEnvironment>(transformations.getEnvironments());
}
};
final ListView<TransformationEnvironment> transformationList = new ListView<TransformationEnvironment>(
"transformations", transformationsModel) {
private static final long serialVersionUID = -6740090246572869212L;
/**
* @see ListView#populateItem(ListItem)
*/
@Override
protected void populateItem(ListItem<TransformationEnvironment> item) {
final TransformationEnvironment env = item.getModelObject();
// identifier
item.add(new Label("identifier", env.getId()));
// name
String projectName = "";
ProjectInfo info = env.getProjectInfo();
if (info != null) {
projectName = info.getName();
}
item.add(new Label("name", projectName));
// upload and transform link
item.add(new BookmarkablePageLink<Void>("upload", UploadPage.class,
new PageParameters().add(UploadPage.PARAMETER_PROJECT, env.getId())));
}
};
add(transformationList);
boolean noTransformations = transformationsModel.getObject().isEmpty();
// caption
WebMarkupContainer caption = new WebMarkupContainer("caption");
caption.setVisible(showCaption && !noTransformations);
add(caption);
add(new WebMarkupContainer("notransformations").setVisible(noTransformations));
}
}