package org.safehaus.penrose.studio.federation.editor;
import org.apache.log4j.Logger;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;
import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.ui.forms.editor.FormPage;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.ui.forms.widgets.Section;
import org.safehaus.penrose.studio.dialog.ErrorDialog;
import org.safehaus.penrose.federation.FederationClient;
/**
* @author Endi S. Dewata
*/
public class FederationDatabasePage extends FormPage {
Logger log = Logger.getLogger(getClass());
FormToolkit toolkit;
FederationEditor editor;
FederationClient federation;
public FederationDatabasePage(FederationEditor editor, FederationClient federation) {
super(editor, "DATABASE", " Database ");
this.editor = editor;
this.federation = federation;
}
public void createFormContent(IManagedForm managedForm) {
try {
toolkit = managedForm.getToolkit();
ScrolledForm form = managedForm.getForm();
form.setText("Database");
Composite body = form.getBody();
body.setLayout(new GridLayout());
Section databaseSection = toolkit.createSection(body, Section.TITLE_BAR | Section.EXPANDED);
databaseSection.setText("Database");
databaseSection.setLayoutData(new GridData(GridData.FILL_BOTH));
Control databaseControl = createDatabaseControl(databaseSection);
databaseSection.setClient(databaseControl);
} catch (Exception e) {
log.error(e.getMessage(), e);
ErrorDialog.open(e);
}
}
public Composite createDatabaseControl(Composite parent) throws Exception {
Composite composite = toolkit.createComposite(parent);
composite.setLayout(new GridLayout(2, false));
/*
Project project = federation.getServer();
PenroseClient client = project.getClient();
PartitionClient partitionClient = client.getPartitionClient(Federation.PARTITION);
ConnectionClient connectionClient = partitionClient.getConnectionClient(Federation.JDBC);
ConnectionConfig connectionConfig = connectionClient.getMappingConfig();
//Partition partition = federation.getPartition();
//JDBCConnection connection = (JDBCConnection)partition.getConnection(Federation.JDBC);
//ConnectionConfig connectionConfig = connection.getMappingConfig();
Label driverLabel = toolkit.createLabel(composite, "Driver:");
GridData gd = new GridData();
gd.widthHint = 100;
driverLabel.setLayoutData(gd);
String driver = connectionConfig.getParameter("driver");
Label driverText = toolkit.createLabel(composite, driver == null ? "" : driver);
driverText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Label domainLabel = toolkit.createLabel(composite, "URL:");
domainLabel.setLayoutData(new GridData());
String url = connectionConfig.getParameter("url");
Label domainText = toolkit.createLabel(composite, url == null ? "" : url);
domainText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Label serverLabel = toolkit.createLabel(composite, "Username:");
serverLabel.setLayoutData(new GridData());
String user = connectionConfig.getParameter("user");
Label serverText = toolkit.createLabel(composite, user == null ? "" : user);
serverText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Label suffixLabel = toolkit.createLabel(composite, "Password:");
suffixLabel.setLayoutData(new GridData());
Label suffixText = toolkit.createLabel(composite, "*****");
suffixText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
*/
/*
Button importButton = new Button(composite, SWT.PUSH);
importButton.setText("Import");
importButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
try {
importFederationConfig();
} catch (Exception e) {
throw new RuntimeException(e.getMessage(), e);
}
}
});
Button exportButton = new Button(composite, SWT.PUSH);
exportButton.setText("Export");
exportButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
try {
exportFederationConfig();
} catch (Exception e) {
throw new RuntimeException(e.getMessage(), e);
}
}
});
*/
return composite;
}
/*
public void importFederationConfig() throws Exception {
FileDialog dialog = new FileDialog(getSite().getShell(), SWT.OPEN);
dialog.setText("Import");
dialog.setFilterExtensions(new String[] { "*.xml" });
String filename = dialog.open();
if (filename == null) return;
File file = new File(filename);
FederationReader reader = new FederationReader();
FederationConfig federationConfig = reader.read(file);
for (Repository repository : federationConfig.getRepositories()) {
federation.addRepository(repository);
}
}
public void exportFederationConfig() throws Exception {
FileDialog dialog = new FileDialog(getSite().getShell(), SWT.SAVE);
dialog.setText("Export");
dialog.setFilterExtensions(new String[] { "*.xml" });
String filename = dialog.open();
if (filename == null) return;
FederationConfig federationConfig = new FederationConfig();
Repository globalRepository = federation.getGlobalRepository();
globalRepository.setName(Federation.GLOBAL);
globalRepository.setType("GLOBAL");
federationConfig.addRepository(globalRepository);
LDAPFederation ldapFederation = federation.getLdapFederation();
for (LDAPRepository repository : ldapFederation.getRepositories()) {
federationConfig.addRepository(repository);
}
NISFederation nisFederation = federation.getNisFederationClient();
for (NISDomain repository : nisFederation.getRepositories()) {
federationConfig.addRepository(repository);
}
File file = new File(filename);
if (file.exists()) {
boolean confirm = MessageDialog.openConfirm(
getSite().getShell(),
"Confirm Export",
file.getName()+" already exists.\n"+
"Do you want to replace it?"
);
if (!confirm) return;
}
FederationWriter writer = new FederationWriter();
writer.write(file, federationConfig);
}
*/
}