package org.safehaus.penrose.studio.source.editor; import org.apache.log4j.Logger; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorSite; import org.eclipse.ui.PartInitException; import org.eclipse.ui.forms.editor.FormEditor; import org.safehaus.penrose.partition.PartitionClient; import org.safehaus.penrose.partition.PartitionManagerClient; import org.safehaus.penrose.client.PenroseClient; import org.safehaus.penrose.source.SourceClient; import org.safehaus.penrose.source.SourceConfig; import org.safehaus.penrose.source.SourceManagerClient; import org.safehaus.penrose.studio.PenroseStudio; import org.safehaus.penrose.studio.dialog.ErrorDialog; import org.safehaus.penrose.studio.config.editor.ParametersPage; import org.safehaus.penrose.studio.server.Server; /** * @author Endi Sukma Dewata */ public class SourceEditor extends FormEditor { public Logger log = Logger.getLogger(getClass()); protected boolean dirty; protected Server server; protected String partitionName; protected String sourceName; protected SourceConfig sourceConfig; public void init(IEditorSite site, IEditorInput input) throws PartInitException { super.init(site, input); SourceEditorInput ei = (SourceEditorInput)input; server = ei.getServer(); partitionName = ei.getPartitionName(); sourceName = ei.getSourceName(); try { PenroseClient client = server.getClient(); PartitionManagerClient partitionManagerClient = client.getPartitionManagerClient(); PartitionClient partitionClient = partitionManagerClient.getPartitionClient(partitionName); SourceManagerClient sourceManagerClient = partitionClient.getSourceManagerClient(); SourceClient sourceClient = sourceManagerClient.getSourceClient(sourceName); sourceConfig = sourceClient.getSourceConfig(); } catch (Exception e) { throw new PartInitException(e.getMessage(), e); } setPartName(ei.getName()); } public void addPages() { try { addPage(new SourcePropertiesPage(this)); addPage(new SourceFieldsPage(this)); ParametersPage parametersPage = new SourceParametersPage(this); parametersPage.setParameters(sourceConfig.getParameters()); addPage(parametersPage); addPage(new SourceBrowsePage(this)); } catch (Exception e) { log.error(e.getMessage(), e); ErrorDialog.open(e); } } public void doSave(IProgressMonitor iProgressMonitor) { try { store(); } catch (Exception e) { log.error(e.getMessage(), e); ErrorDialog.open(e); } } public void doSaveAs() { } public void rename(String name, String newName) throws Exception { PenroseClient client = server.getClient(); PartitionManagerClient partitionManagerClient = client.getPartitionManagerClient(); PartitionClient partitionClient = partitionManagerClient.getPartitionClient(partitionName); SourceManagerClient sourceManagerClient = partitionClient.getSourceManagerClient(); sourceManagerClient.renameSource(name, newName); partitionClient.store(); sourceConfig.setName(newName); setPartName(partitionName+"."+newName); } public void store() throws Exception { PenroseClient client = server.getClient(); PartitionManagerClient partitionManagerClient = client.getPartitionManagerClient(); PartitionClient partitionClient = partitionManagerClient.getPartitionClient(partitionName); SourceManagerClient sourceManagerClient = partitionClient.getSourceManagerClient(); sourceManagerClient.updateSource(sourceName, sourceConfig); partitionClient.store(); setPartName(partitionName+"."+sourceConfig.getName()); } public boolean isDirty() { return dirty; } public boolean isSaveAsAllowed() { return false; } public void setDirty(boolean dirty) { this.dirty = dirty; } public Server getServer() { return server; } public void setServer(Server server) { this.server = server; } public String getPartitionName() { return partitionName; } public void setPartitionName(String partitionName) { this.partitionName = partitionName; } public SourceConfig getSourceConfig() { return sourceConfig; } public void setSourceConfig(SourceConfig sourceConfig) { this.sourceConfig = sourceConfig; } }