Java tutorial
/**** * * Copyright 2013-2014 Wedjaa <http://www.wedjaa.net/> * * Licensed 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 net.wedjaa.jasper.elasticsearch.server; import net.wedjaa.jasper.elasticsearch.adapter.ESAdapterService; import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.core.databinding.beans.PojoObservables; import org.eclipse.jface.databinding.swt.SWTObservables; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import com.jaspersoft.jasperserver.api.metadata.xml.domain.impl.ResourceProperty; import com.jaspersoft.studio.model.ANode; import com.jaspersoft.studio.server.model.MResource; import com.jaspersoft.studio.server.model.datasource.MRDatasourceCustom; import com.jaspersoft.studio.server.utils.ResourceDescriptorUtil; import com.jaspersoft.studio.server.wizard.resource.APageContent; import com.jaspersoft.studio.utils.Misc; public class DatasourceESPageContent extends APageContent { private Text esHostField; private Text esPortField; private Text esClusterField; private Text esIndexesField; private Text esTypesField; private Text esUsernameField; private Text esPasswordField; private Combo esSearchModeField; public DatasourceESPageContent(ANode parent, MResource resource, DataBindingContext bindingContext) { super(parent, resource, bindingContext); } public DatasourceESPageContent(ANode parent, MResource resource) { super(parent, resource); } @Override public String getPageName() { return "net.wedjaa.jasper.elasticsearch.server.page.datasource.elasticsearch"; } @Override public String getName() { return "ElasticSearch DataSource"; } private void createLabel(Composite composite, String text) { Label label = new Label(composite, SWT.NONE); label.setText(text); label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1)); } private Text createTextField(Composite composite, boolean password) { Text textField = new Text(composite, !password ? SWT.BORDER : SWT.BORDER | SWT.PASSWORD); textField.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); return textField; } private Combo createComboField(Composite composite) { Combo comboField = new Combo(composite, SWT.BORDER); comboField.add("Hits Mode - Returns Hits Data", 0); comboField.add("Facets Mode - Returns Facets Data", 1); comboField.add("Aggregation Mode - Returns Aggregations Data", 2); comboField.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); return comboField; } public Control createContent(Composite parent) { Composite composite = new Composite(parent, SWT.NONE); composite.setLayout(new GridLayout(2, false)); createLabel(composite, "Indexes - comma separated"); esIndexesField = createTextField(composite, false); createLabel(composite, "Types - comma separated"); esTypesField = createTextField(composite, false); createLabel(composite, "Hostname"); esHostField = createTextField(composite, false); createLabel(composite, "Port"); esPortField = createTextField(composite, false); createLabel(composite, "Cluster"); esClusterField = createTextField(composite, false); createLabel(composite, "Username"); esUsernameField = createTextField(composite, false); createLabel(composite, "Password"); esPasswordField = createTextField(composite, true); createLabel(composite, "Query Mode"); esSearchModeField = createComboField(composite); rebind(); return composite; } @Override protected void rebind() { ResourceProperty resprop = ResourceDescriptorUtil.getProperty( MRDatasourceCustom.PROP_DATASOURCE_CUSTOM_PROPERTY_MAP, res.getValue().getProperties()); ResourceProperty rsp = ResourceDescriptorUtil.getProperty(ESAdapterService.ES_INDEX_PARAM, resprop.getProperties()); rsp.setValue(Misc.nvl(rsp.getValue())); bindingContext.bindValue(SWTObservables.observeText(esIndexesField, SWT.Modify), PojoObservables.observeValue(rsp, "value")); rsp = ResourceDescriptorUtil.getProperty(ESAdapterService.ES_TYPE_PARAM, resprop.getProperties()); rsp.setValue(Misc.nvl(rsp.getValue())); bindingContext.bindValue(SWTObservables.observeText(esTypesField, SWT.Modify), PojoObservables.observeValue(rsp, "value")); rsp = ResourceDescriptorUtil.getProperty(ESAdapterService.ES_HOST_PARAM, resprop.getProperties()); rsp.setValue(Misc.nvl(rsp.getValue())); bindingContext.bindValue(SWTObservables.observeText(esHostField, SWT.Modify), PojoObservables.observeValue(rsp, "value")); rsp = ResourceDescriptorUtil.getProperty(ESAdapterService.ES_PORT_PARAM, resprop.getProperties()); rsp.setValue(Misc.nvl(rsp.getValue())); bindingContext.bindValue(SWTObservables.observeText(esPortField, SWT.Modify), PojoObservables.observeValue(rsp, "value")); rsp = ResourceDescriptorUtil.getProperty(ESAdapterService.ES_CLUSTER_PARAM, resprop.getProperties()); rsp.setValue(Misc.nvl(rsp.getValue())); bindingContext.bindValue(SWTObservables.observeText(esClusterField, SWT.Modify), PojoObservables.observeValue(rsp, "value")); rsp = ResourceDescriptorUtil.getProperty(ESAdapterService.ES_USER_PARAM, resprop.getProperties()); rsp.setValue(Misc.nvl(rsp.getValue())); bindingContext.bindValue(SWTObservables.observeText(esUsernameField, SWT.Modify), PojoObservables.observeValue(rsp, "value")); rsp = ResourceDescriptorUtil.getProperty(ESAdapterService.ES_PASSWORD_PARAM, resprop.getProperties()); rsp.setValue(Misc.nvl(rsp.getValue())); bindingContext.bindValue(SWTObservables.observeText(esPasswordField, SWT.Modify), PojoObservables.observeValue(rsp, "value")); rsp = ResourceDescriptorUtil.getProperty(ESAdapterService.ES_MODE_PARAM, resprop.getProperties()); rsp.setValue(Misc.nvl(rsp.getValue())); bindingContext.bindValue(SWTObservables.observeSingleSelectionIndex(esSearchModeField), PojoObservables.observeValue(rsp, "value")); } @Override public String getHelpContext() { return "net.wedjaa.jasper.elasticsearch.toc"; } }