/* (c) 2016 Open Source Geospatial Foundation - all rights reserved
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geogig.geoserver.model;
import java.net.URI;
import org.apache.wicket.model.IModel;
import org.geogig.geoserver.config.ImportRepositoryFormBean;
import org.geogig.geoserver.config.PostgresConfigBean;
import org.geogig.geoserver.config.RepositoryInfo;
/**
* Data model for importing an existing GeoGig repository. This model essentially wraps a
* {@link RepositoryInfo} and uses {@link ImportRepositoryFormBean} to hold the UI pieces that are
* used to construct the repository location {@link java.net.URI}.
*/
public class ImportRepositoryFormModel implements IModel<ImportRepositoryFormBean> {
private static final long serialVersionUID = 1L;
private final IModel<RepositoryInfo> repoInfoModel;
private ImportRepositoryFormBean bean;
public ImportRepositoryFormModel(IModel<RepositoryInfo> repoInfoModel) {
this.repoInfoModel = repoInfoModel;
}
@Override
public ImportRepositoryFormBean getObject() {
if (bean == null) {
bean = new ImportRepositoryFormBean();
RepositoryInfo repoInfo = repoInfoModel.getObject();
if (repoInfo != null && repoInfo.getLocation() != null) {
final URI uri = repoInfo.getLocation();
// get the scheme
final String scheme = uri.getScheme();
final String path = uri.getPath();
switch (scheme) {
case "file":
// parse the driectroy out of the path
bean.setRepoDirectory(path);
case "postgresql":
// build the pgBean
bean.setPgBean(PostgresConfigBean.from(uri));
// get the name
final String repoName = repoInfo.getRepoName();
bean.setRepoName(repoName);
}
}
}
return bean;
}
@Override
public void setObject(ImportRepositoryFormBean object) {
this.bean = object;
}
@Override
public void detach() {
if (repoInfoModel != null) {
repoInfoModel.detach();
}
bean = null;
}
}