You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openaz.apache.org by pd...@apache.org on 2016/03/17 02:13:08 UTC
[04/23] incubator-openaz git commit: Revert "Ported original att
source to openaz"
http://git-wip-us.apache.org/repos/asf/incubator-openaz/blob/c68f98c5/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPConfigurationEditorWindow.java
----------------------------------------------------------------------
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPConfigurationEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPConfigurationEditorWindow.java
deleted file mode 100644
index 08f9306..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPConfigurationEditorWindow.java
+++ /dev/null
@@ -1,364 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.openaz.xacml.admin.view.windows;
-
-import java.util.Locale;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.jpa.PIPConfiguration;
-import org.apache.openaz.xacml.admin.jpa.PIPType;
-import org.apache.openaz.xacml.admin.util.JPAUtils;
-import org.apache.openaz.xacml.admin.view.fields.ConfigParamField;
-import com.vaadin.addon.jpacontainer.EntityItem;
-import com.vaadin.addon.jpacontainer.fieldfactory.SingleSelectConverter;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.fieldgroup.FieldGroup;
-import com.vaadin.data.fieldgroup.FieldGroup.CommitException;
-import com.vaadin.data.fieldgroup.PropertyId;
-import com.vaadin.data.util.converter.Converter;
-import com.vaadin.event.FieldEvents.TextChangeEvent;
-import com.vaadin.event.FieldEvents.TextChangeListener;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.AbstractSelect.ItemCaptionMode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.CheckBox;
-import com.vaadin.ui.ComboBox;
-import com.vaadin.ui.GridLayout;
-import com.vaadin.ui.TextArea;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.Window;
-
-public class PIPConfigurationEditorWindow extends Window {
- private static final long serialVersionUID = 1L;
- private static final Log logger = LogFactory.getLog(PIPConfigurationEditorWindow.class);
- private final PIPConfigurationEditorWindow self = this;
- private final EntityItem<PIPConfiguration> entity;
- private FieldGroup fieldGroup;
- private boolean isSaved = false;
-
- private GridLayout grid = new GridLayout(2,6);
-
- @PropertyId("piptype")
- ComboBox comboType = new ComboBox("Type");
-
- @PropertyId("name")
- TextField fieldName = new TextField("Name");
-
- @PropertyId("description")
- TextArea areaDescription = new TextArea("Description");
-
- @PropertyId("issuer")
- TextField fieldIssuer = new TextField("Issuer");
-
- @PropertyId("requiresResolvers")
- CheckBox requiresResolvers = new CheckBox("Requires Resolvers");
-
- @PropertyId("pipconfigParams")
- ConfigParamField paramField = null;
-
- Button buttonSave = new Button("Save");
-
- /**
- * The constructor should first build the main layout, set the
- * composition root and then do any custom initialization.
- *
- * The constructor will not be automatically regenerated by the
- * visual editor.
- */
- public PIPConfigurationEditorWindow(EntityItem<PIPConfiguration> entity) {
- //
- // Our base component
- //
- this.setContent(this.grid);
- this.grid.setMargin(true);
- this.grid.setSpacing(true);
- //
- // Set our shortcuts
- //
- this.setCloseShortcut(KeyCode.ESCAPE);
- //
- // Save
- //
- this.entity = entity;
- //
- // Check if a brand new object and set the default
- // pip type.
- //
- if (this.entity.getEntity().getPiptype() == null) {
- this.entity.getEntity().setPiptype(JPAUtils.getPIPType(PIPType.TYPE_SQL));
- }
-
- //
- // Initialize GUI components
- //
- this.initialize();
- //
- // Add components
- //
- this.grid.addComponent(this.comboType, 0, 0);
- this.grid.addComponent(this.fieldName, 0, 1);
- this.grid.addComponent(this.fieldIssuer, 0, 2);
- this.grid.addComponent(this.areaDescription, 0, 3);
- this.grid.addComponent(this.requiresResolvers, 0, 4);
- this.grid.addComponent(this.paramField, 1, 0, 1, 4);
- this.grid.addComponent(this.buttonSave, 0, 5, 1, 5);
- //
- // Bind and initialize
- //
- this.initializeFields();
- //
- // Post initialize
- //
- this.initializeButtons();
- //
- // Set focus
- //
- this.fieldName.focus();
- //
- // Initially call this to see if the entity is already
- // saveable
- //
- this.formChanged();
- }
-
- protected void initialize() {
- //
- //
- //
- this.fieldName.setImmediate(true);
- this.fieldName.setNullRepresentation("");
- this.fieldName.setRequired(true);
- this.fieldName.setRequiredError("Enter a name for the configuration");
- this.fieldName.setInputPrompt("Eg. \"Company LDAP Server\" or \"MySQL Customer DB\"");
-
- this.fieldIssuer.setNullRepresentation("");
- this.fieldIssuer.setRequired(false);
- this.fieldIssuer.setInputPrompt("Eg. urn:com:sample:hr");
-
- this.areaDescription.setNullRepresentation("");
- this.areaDescription.setRequired(false);
- this.areaDescription.setInputPrompt("Optionally write a description for this configuration.");
- this.areaDescription.setRows(3);
- this.areaDescription.setWidth("100%");
- //
- //
- //
- this.requiresResolvers.setConverter(new Converter<Boolean, Object>() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public Object convertToModel(Boolean value,
- Class<? extends Object> targetType, Locale locale)
- throws Converter.ConversionException {
- if (targetType.isAssignableFrom(java.lang.Character.class)) {
- if (value) {
- return '1';
- } else {
- return '0';
- }
- }
- return null;
- }
-
- @Override
- public Boolean convertToPresentation(Object value,
- Class<? extends Boolean> targetType, Locale locale)
- throws Converter.ConversionException {
- if (value instanceof Character) {
- return ((Character) value) == '1';
- }
- return null;
- }
-
- @Override
- public Class<Object> getModelType() {
- return Object.class;
- }
-
- @Override
- public Class<Boolean> getPresentationType() {
- return Boolean.class;
- }
- });
- //
- //
- //
- this.comboType.setContainerDataSource(((XacmlAdminUI)UI.getCurrent()).getPIPTypes());
- this.comboType.setImmediate(true);
- this.comboType.setConverter(new SingleSelectConverter<Object>(this.comboType));
- this.comboType.setItemCaptionMode(ItemCaptionMode.PROPERTY);
- this.comboType.setItemCaptionPropertyId("type");
- this.comboType.setNullSelectionAllowed(false);
- this.comboType.setRequired(true);
- this.comboType.setRequiredError("You need to identify what type of configuration this is.");
- //
- //
- //
- this.paramField = new ConfigParamField(this.entity);
- this.paramField.setValidationVisible(false);
- }
-
- protected void initializeFields() {
- //
- // Now create our field group and bind our fields.
- // This will populate the components with the
- // current value if we are editing an entity.
- //
- this.fieldGroup = new FieldGroup(this.entity);
- this.fieldGroup.bindMemberFields(this);
- //
- //
- //
- this.fieldName.addTextChangeListener(new TextChangeListener() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void textChange(TextChangeEvent event) {
- self.formChanged();
- }
-
- });
- this.fieldName.addValueChangeListener(new ValueChangeListener() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void valueChange(ValueChangeEvent event) {
- self.formChanged();
- }
- });
- //
- //
- //
- this.paramField.addValueChangeListener(new ValueChangeListener() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void valueChange(ValueChangeEvent event) {
- self.formChanged();
- }
- });
- //
- // Only custom PIP configurations should be allowed to
- // check the "requires resolvers" box. We know that the
- // SQL/LDAP/HyperSQL/CSV resolver already do require resolvers.
- //
- if (this.entity.getEntity().getPiptype().isCustom() == false) {
- this.requiresResolvers.setEnabled(false);
- }
- //
- // Finish GUI intialization
- //
- if (this.entity.isPersistent()) {
- //
- // The user is editing something, don't let them change
- // the type
- //
- this.comboType.setReadOnly(true);
- }
- this.comboType.addValueChangeListener(new ValueChangeListener() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void valueChange(ValueChangeEvent event) {
- //
- // Get the new value
- //
- Object id = self.comboType.getValue();
- EntityItem<PIPType> type = null;
- if (id != null) {
- type = ((XacmlAdminUI) UI.getCurrent()).getPIPTypes().getItem(id);
- }
- //
- // Have our custom field reset itself
- //
- self.paramField.resetContent(type != null ? type.getEntity() : null);
- //
- // Do we need to display the requires resolver check box?
- //
- if (type != null && type.getEntity().isCustom()) {
- self.requiresResolvers.setEnabled(true);
- self.requiresResolvers.setRequired(true);
- self.requiresResolvers.setValue(self.entity.getEntity().requiresResolvers());
- } else {
- self.requiresResolvers.setEnabled(false);
- self.requiresResolvers.setRequired(false);
- }
- //
- // Re-center the form
- //
- self.center();
- //
- // Check if we can enable the save button
- //
- self.formChanged();
- }
- });
- }
-
- protected void formChanged() {
- if (this.fieldGroup.isValid() || this.entity.isModified()) {
- this.buttonSave.setEnabled(true);
- } else {
- this.buttonSave.setEnabled(false);
- }
- }
-
- protected void initializeButtons() {
- this.grid.setComponentAlignment(this.buttonSave, Alignment.BOTTOM_CENTER);
- this.buttonSave.setImmediate(true);
- this.buttonSave.setEnabled(false);
- this.buttonSave.addClickListener(new ClickListener() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void buttonClick(ClickEvent event) {
- try {
- //
- // Commit changes
- //
- self.fieldGroup.commit();
- //
- // Save
- //
- self.isSaved = true;
- //
- // We can close
- //
- self.close();
- } catch (CommitException e) {
- logger.warn("Couldn't commit, the save button should NOT be enabled.");
- }
- }
- });
- }
-
- public boolean isSaved() {
- return this.isSaved;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-openaz/blob/c68f98c5/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPCustomResolverEditorWindow.java
----------------------------------------------------------------------
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPCustomResolverEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPCustomResolverEditorWindow.java
deleted file mode 100644
index e024d0e..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPCustomResolverEditorWindow.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.openaz.xacml.admin.view.windows;
-
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.VerticalLayout;
-
-public class PIPCustomResolverEditorWindow extends CustomComponent {
-
- /*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
- @AutoGenerated
- private VerticalLayout mainLayout;
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- /**
- * The constructor should first build the main layout, set the
- * composition root and then do any custom initialization.
- *
- * The constructor will not be automatically regenerated by the
- * visual editor.
- */
- public PIPCustomResolverEditorWindow() {
- buildMainLayout();
- setCompositionRoot(mainLayout);
- }
-
- @AutoGenerated
- private VerticalLayout buildMainLayout() {
- // common part: create layout
- mainLayout = new VerticalLayout();
- mainLayout.setImmediate(false);
- mainLayout.setWidth("-1px");
- mainLayout.setHeight("-1px");
- mainLayout.setMargin(false);
-
- // top-level component properties
- setWidth("-1px");
- setHeight("-1px");
-
- return mainLayout;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-openaz/blob/c68f98c5/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPImportWindow.java
----------------------------------------------------------------------
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPImportWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPImportWindow.java
deleted file mode 100644
index 650ed09..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPImportWindow.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.openaz.xacml.admin.view.windows;
-
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.OutputStream;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.ui.Upload;
-import com.vaadin.ui.Upload.Receiver;
-import com.vaadin.ui.Upload.SucceededEvent;
-import com.vaadin.ui.Upload.SucceededListener;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class PIPImportWindow extends Window implements Receiver, SucceededListener {
- /*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
- private static final Log logger = LogFactory.getLog(PolicyUploadWindow.class);
-
- @AutoGenerated
- private VerticalLayout mainLayout;
-
- @AutoGenerated
- private Upload upload;
-
- private static final long serialVersionUID = 1L;
- private String filename = null;
-
- /**
- * The constructor should first build the main layout, set the
- * composition root and then do any custom initialization.
- *
- * The constructor will not be automatically regenerated by the
- * visual editor.
- */
- public PIPImportWindow() {
- buildMainLayout();
- //setCompositionRoot(mainLayout);
- setContent(mainLayout);
- //
- // Set ourselves up
- //
- this.upload.addSucceededListener(this);
- this.upload.setReceiver(this);
- }
-
- @AutoGenerated
- private VerticalLayout buildMainLayout() {
- // common part: create layout
- mainLayout = new VerticalLayout();
- mainLayout.setImmediate(false);
- mainLayout.setWidth("-1px");
- mainLayout.setHeight("-1px");
- mainLayout.setMargin(true);
- mainLayout.setSpacing(true);
-
- // top-level component properties
- setWidth("-1px");
- setHeight("-1px");
-
- // upload_1
- upload = new Upload();
- upload.setImmediate(false);
- upload.setWidth("-1px");
- upload.setHeight("-1px");
- mainLayout.addComponent(upload);
-
- return mainLayout;
- }
-
- @Override
- public void uploadSucceeded(SucceededEvent event) {
- this.filename = event.getFilename();
- this.close();
- }
-
- @Override
- public OutputStream receiveUpload(String filename, String mimeType) {
- //
- // Try to create the output stream
- //
- try {
- return new FileOutputStream(filename);
- } catch (FileNotFoundException e) {
- logger.error("Failed to create uploaded file", e);
- }
- return null;
- }
-
- public String getUploadedFile() {
- return this.filename;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-openaz/blob/c68f98c5/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPParamEditorWindow.java
----------------------------------------------------------------------
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPParamEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPParamEditorWindow.java
deleted file mode 100644
index 70942c2..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPParamEditorWindow.java
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.openaz.xacml.admin.view.windows;
-
-import org.apache.openaz.xacml.admin.jpa.PIPConfigParam;
-import org.apache.openaz.xacml.admin.jpa.PIPResolverParam;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Buffered.SourceException;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class PIPParamEditorWindow extends Window {
-
- /*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
- @AutoGenerated
- private VerticalLayout mainLayout;
- @AutoGenerated
- private Button buttonSave;
- @AutoGenerated
- private TextField textFieldValue;
- @AutoGenerated
- private TextField textFieldName;
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private final PIPParamEditorWindow self = this;
- private final Object config;
- private boolean isSaved = false;
-
- /**
- * The constructor should first build the main layout, set the
- * composition root and then do any custom initialization.
- *
- * The constructor will not be automatically regenerated by the
- * visual editor.
- */
- public PIPParamEditorWindow(Object config) {
- buildMainLayout();
- //setCompositionRoot(mainLayout);
- setContent(mainLayout);
- //
- // Save parameters
- //
- this.config = config;
- //
- // Initialize
- //
- this.initialize();
- //
- // close shortcut
- //
- this.setCloseShortcut(KeyCode.ESCAPE);
- //
- // focus
- //
- this.textFieldName.focus();
- }
-
- protected void initialize() {
- //
- // GUI properties
- //
- this.textFieldName.setImmediate(true);
- this.textFieldName.setNullRepresentation("");
- this.textFieldValue.setImmediate(true);
- this.textFieldValue.setNullRepresentation("");
- //
- // Now setup based on the object
- //
- if (this.config instanceof PIPConfigParam) {
- this.initializePIPConfiguration();
- } else if (this.config instanceof PIPResolverParam) {
- this.initializePIPResolver();
- } else {
- throw new IllegalArgumentException("Unknown object");
- }
- this.initializeButtons();
- this.setupButtons();
- }
-
- protected void initializePIPConfiguration() {
- final PIPConfigParam param = (PIPConfigParam) this.config;
- //
- // setup the name
- //
- this.textFieldName.setValue(param.getParamName());
- this.textFieldName.addValueChangeListener(new ValueChangeListener() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void valueChange(ValueChangeEvent event) {
- param.setParamName(self.textFieldName.getValue());
- self.setupButtons();
- }
- });
- //
- // setup the value
- //
- this.textFieldValue.setValue(param.getParamValue());
- this.textFieldValue.addValueChangeListener(new ValueChangeListener() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void valueChange(ValueChangeEvent event) {
- param.setParamValue(self.textFieldValue.getValue());
- self.setupButtons();
- }
- });
- }
-
- protected void initializePIPResolver() {
- final PIPResolverParam param = (PIPResolverParam) this.config;
- //
- // setup the name
- //
- this.textFieldName.setValue(param.getParamName());
- this.textFieldName.addValueChangeListener(new ValueChangeListener() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void valueChange(ValueChangeEvent event) {
- param.setParamName(self.textFieldName.getValue());
- self.setupButtons();
- }
- });
- //
- // setup the value
- //
- this.textFieldValue.setValue(param.getParamValue());
- this.textFieldValue.addValueChangeListener(new ValueChangeListener() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void valueChange(ValueChangeEvent event) {
- param.setParamValue(self.textFieldValue.getValue());
- self.setupButtons();
- }
- });
- }
-
- protected void initializeButtons() {
- this.buttonSave.addClickListener(new ClickListener() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void buttonClick(ClickEvent event) {
- try {
- //
- // Commit the values
- //
- self.textFieldName.commit();
- self.textFieldValue.commit();
- //
- // Done, save
- //
- self.isSaved = true;
- //
- // Close
- //
- self.close();
- } catch (SourceException | InvalidValueException e) { //NOPMD
- //
- // Vaadin will display error
- //
- }
- }
- });
- }
-
- protected void setupButtons() {
- if (this.textFieldName.getValue() != null && this.textFieldValue.getValue() != null) {
- this.buttonSave.setEnabled(true);
- } else {
- this.buttonSave.setEnabled(false);
- }
- }
-
- public boolean isSaved() {
- return this.isSaved;
- }
-
- public Object getParameter() {
- return this.config;
- }
-
- @AutoGenerated
- private VerticalLayout buildMainLayout() {
- // common part: create layout
- mainLayout = new VerticalLayout();
- mainLayout.setImmediate(false);
- mainLayout.setWidth("-1px");
- mainLayout.setHeight("-1px");
- mainLayout.setMargin(true);
- mainLayout.setSpacing(true);
-
- // top-level component properties
- setWidth("-1px");
- setHeight("-1px");
-
- // textFieldName
- textFieldName = new TextField();
- textFieldName.setCaption("Parameter Name");
- textFieldName.setImmediate(false);
- textFieldName.setWidth("-1px");
- textFieldName.setHeight("-1px");
- textFieldName.setInvalidAllowed(false);
- textFieldName.setRequired(true);
- mainLayout.addComponent(textFieldName);
-
- // textFieldValue
- textFieldValue = new TextField();
- textFieldValue.setCaption("Parameter Value");
- textFieldValue.setImmediate(false);
- textFieldValue.setWidth("-1px");
- textFieldValue.setHeight("-1px");
- textFieldValue.setInvalidAllowed(false);
- textFieldValue.setRequired(true);
- mainLayout.addComponent(textFieldValue);
-
- // buttonSave
- buttonSave = new Button();
- buttonSave.setCaption("Save");
- buttonSave.setImmediate(true);
- buttonSave.setWidth("-1px");
- buttonSave.setHeight("-1px");
- mainLayout.addComponent(buttonSave);
- mainLayout.setComponentAlignment(buttonSave, new Alignment(48));
-
- return mainLayout;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-openaz/blob/c68f98c5/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPResolverEditorWindow.java
----------------------------------------------------------------------
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPResolverEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPResolverEditorWindow.java
deleted file mode 100644
index 530fddb..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPResolverEditorWindow.java
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.openaz.xacml.admin.view.windows;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.jpa.PIPResolver;
-import org.apache.openaz.xacml.admin.view.fields.ResolverParamField;
-import com.vaadin.addon.jpacontainer.EntityItem;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.fieldgroup.FieldGroup;
-import com.vaadin.data.fieldgroup.FieldGroup.CommitException;
-import com.vaadin.data.fieldgroup.PropertyId;
-import com.vaadin.event.FieldEvents.TextChangeEvent;
-import com.vaadin.event.FieldEvents.TextChangeListener;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.GridLayout;
-import com.vaadin.ui.TextArea;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.Window;
-
-public class PIPResolverEditorWindow extends Window {
-
- /*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private static final Log logger = LogFactory.getLog(PIPResolverEditorWindow.class);
- private final PIPResolverEditorWindow self = this;
-
- private final EntityItem<PIPResolver> entity;
- private FieldGroup fieldGroup;
- private boolean isSaved = false;
- private GridLayout grid = new GridLayout(2,4);
-
- @PropertyId("name")
- TextField fieldName = new TextField("Name");
-
- @PropertyId("description")
- TextArea areaDescription = new TextArea("Description");
-
- @PropertyId("issuer")
- TextField fieldIssuer = new TextField("Issuer");
-
- @PropertyId("pipresolverParams")
- ResolverParamField paramField;
-
- Button buttonSave = new Button("Save");
-
- /**
- * The constructor should first build the main layout, set the
- * composition root and then do any custom initialization.
- *
- * The constructor will not be automatically regenerated by the
- * visual editor.
- */
- public PIPResolverEditorWindow(EntityItem<PIPResolver> entity) {
- //
- // Our base component
- //
- this.setContent(this.grid);
- this.grid.setMargin(true);
- this.grid.setSpacing(true);
- //
- // Save
- //
- this.entity = entity;
- //
- // Set our shortcuts
- //
- this.setCloseShortcut(KeyCode.ESCAPE);
- //
- // Initialize
- //
- this.initialize();
- //
- // Add components
- //
- this.grid.addComponent(this.fieldName, 0, 0);
- this.grid.addComponent(this.fieldIssuer, 0, 1);
- this.grid.addComponent(this.areaDescription, 0, 2);
- this.grid.addComponent(this.paramField, 1, 0, 1, 2);
- this.grid.addComponent(this.buttonSave, 0, 3, 1, 3);
- //
- // Bind and initialize
- //
- this.initializeFields();
- //
- // Post initialize
- //
- this.initializeButtons();
- //
- // Set focus
- //
- this.fieldName.focus();
- //
- // Initially call this to see if the entity is already
- // saveable
- //
- this.formChanged();
- }
-
- protected void initialize() {
- //
- //
- //
- this.fieldName.setImmediate(true);
- this.fieldName.setNullRepresentation("");
- this.fieldName.setRequired(true);
- this.fieldName.setRequiredError("Enter a name for the resolver");
- this.fieldName.setInputPrompt("Eg. \"Resolve employee type\"");
-
- this.fieldIssuer.setNullRepresentation("");
- this.fieldIssuer.setRequired(false);
- this.fieldIssuer.setInputPrompt("Eg. urn:com:sample:hr");
-
- this.areaDescription.setNullRepresentation("");
- this.areaDescription.setRequired(false);
- this.areaDescription.setInputPrompt("Optionally write a description for this resolver.");
- this.areaDescription.setRows(3);
- this.areaDescription.setWidth("100%");
- //
- // Create our field
- //
- this.paramField = new ResolverParamField(this.entity);
- //this.paramField.setValidationVisible(false);
- }
-
- protected void initializeFields() {
- //
- // Now create our field group and bind our fields.
- // This will populate the components with the
- // current value if we are editing an entity.
- //
- this.fieldGroup = new FieldGroup(this.entity);
- this.fieldGroup.bindMemberFields(this);
- //
- //
- //
- this.fieldName.addTextChangeListener(new TextChangeListener() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void textChange(TextChangeEvent event) {
- self.formChanged();
- }
- });
- //
- //
- //
- this.paramField.addValueChangeListener(new ValueChangeListener() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void valueChange(ValueChangeEvent event) {
- self.formChanged();
- }
- });
- }
-
- protected void formChanged() {
- if (this.fieldGroup.isValid() || this.entity.isModified()) {
- this.buttonSave.setEnabled(true);
- } else {
- this.buttonSave.setEnabled(false);
- }
- }
-
- protected void initializeButtons() {
- this.grid.setComponentAlignment(this.buttonSave, Alignment.BOTTOM_CENTER);
- this.buttonSave.setImmediate(true);
- this.buttonSave.setEnabled(false);
- this.buttonSave.addClickListener(new ClickListener() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void buttonClick(ClickEvent event) {
- try {
- //
- // Commit changes
- //
- self.fieldGroup.commit();
- //
- // Save
- //
- self.isSaved = true;
- //
- // We can close
- //
- self.close();
- } catch (CommitException e) {
- logger.warn("Couldn't commit, the save button should NOT be enabled.");
- }
- }
- });
- }
-
- public boolean isSaved() {
- return this.isSaved;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-openaz/blob/c68f98c5/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPSQLResolverEditorWindow.java
----------------------------------------------------------------------
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPSQLResolverEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPSQLResolverEditorWindow.java
deleted file mode 100644
index 2fb4a25..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPSQLResolverEditorWindow.java
+++ /dev/null
@@ -1,1199 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.openaz.xacml.admin.view.windows;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeDesignatorType;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.jpa.Attribute;
-import org.apache.openaz.xacml.admin.jpa.PIPResolver;
-import org.apache.openaz.xacml.admin.jpa.PIPResolverParam;
-import org.apache.openaz.xacml.admin.util.AdminNotification;
-import org.apache.openaz.xacml.admin.util.XACMLConstants;
-import org.apache.openaz.xacml.admin.view.events.FormChangedEventListener;
-import org.apache.openaz.xacml.admin.view.events.FormChangedEventNotifier;
-import org.apache.openaz.xacml.api.XACML3;
-import org.apache.openaz.xacml.std.pip.engines.csv.ConfigurableCSVResolver;
-import org.apache.openaz.xacml.std.pip.engines.jdbc.ConfigurableJDBCResolver;
-import org.apache.openaz.xacml.std.pip.engines.ldap.ConfigurableLDAPResolver;
-import com.google.common.base.Joiner;
-import com.google.common.base.Splitter;
-import com.vaadin.addon.jpacontainer.EntityItem;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Buffered.SourceException;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.data.util.BeanItem;
-import com.vaadin.data.util.BeanItemContainer;
-import com.vaadin.event.Action;
-import com.vaadin.event.Action.Handler;
-import com.vaadin.event.ItemClickEvent;
-import com.vaadin.event.ItemClickEvent.ItemClickListener;
-import com.vaadin.ui.CheckBox;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.Table;
-import com.vaadin.ui.TextArea;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window.CloseEvent;
-import com.vaadin.ui.Window.CloseListener;
-
-public class PIPSQLResolverEditorWindow extends CustomComponent implements FormChangedEventNotifier, Handler {
-
- @AutoGenerated
- private VerticalLayout mainLayout;
-
- @AutoGenerated
- private Table tableAttributes;
-
- @AutoGenerated
- private Table tableRequiredAttributes;
-
- @AutoGenerated
- private CheckBox checkBoxShortIds;
-
- @AutoGenerated
- private TextField textFieldFilter;
-
- @AutoGenerated
- private TextField textFieldBase;
-
- @AutoGenerated
- private TextArea textAreaSelect;
-
- private final Action ADD_ATTRIBUTE = new Action("Add Attribute");
- private final Action EDIT_ATTRIBUTE = new Action("Edit Attribute");
- private final Action CLONE_ATTRIBUTE = new Action("Clone Attribute");
- private final Action REMOVE_ATTRIBUTE = new Action("Remove Attribute");
-
- /*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
- /**
- *
- */
-
- protected class ResolverAttribute implements Serializable {
- private static final long serialVersionUID = 1L;
- String identifier = null;
- String prefix = null;
- PIPResolverParam id = null;
- PIPResolverParam category = null;
- PIPResolverParam datatype = null;
- PIPResolverParam issuer = null;
- PIPResolverParam column = null;
-
- public ResolverAttribute(String prefix, String identifier) {
- this.prefix = prefix;
- this.identifier = identifier;
- }
-
- public ResolverAttribute(String prefix, String identifier, ResolverAttribute target) {
- this(prefix, identifier);
- this.setId(target.getId());
- this.setCategory(target.getCategory());
- this.setDatatype(target.getDatatype());
- this.setIssuer(target.getIssuer());
- this.setColumn(target.getColumn());
- this.setResolver(target.id.getPipresolver());
- }
-
- public String getIdentifier() {
- return this.identifier;
- }
-
- public String getId() {
- if (this.id == null) {
- return null;
- }
- return this.id.getParamValue();
- }
-
- public String getShortId() {
- String id = this.getId();
- if (id == null) {
- return null;
- }
- return XACMLConstants.extractShortName(id);
- }
-
- public PIPResolverParam getIdParam() {
- return this.id;
- }
-
- public void setId(String id) {
- if (this.id == null) {
- this.id = new PIPResolverParam();
- this.id.setParamName(this.prefix + this.identifier + ".id");
- }
- this.id.setParamValue(id);
- }
-
- public void setId(PIPResolverParam param) {
- this.id = param;
- }
-
- public String getCategory() {
- if (this.category == null) {
- return null;
- }
- return this.category.getParamValue();
- }
-
- public String getShortCategory() {
- String category = this.getCategory();
- if (category == null) {
- return null;
- }
- return XACMLConstants.extractShortName(category);
- }
-
- public PIPResolverParam getCategoryParam() {
- return this.category;
- }
-
- public void setCategory(String category) {
- if (this.category == null) {
- this.category = new PIPResolverParam();
- this.category.setParamName(this.prefix + this.identifier + ".category");
- }
- this.category.setParamValue(category);
- }
-
- public void setCategory(PIPResolverParam param) {
- this.category = param;
- }
-
- public String getDatatype() {
- if (this.datatype == null) {
- return null;
- }
- return this.datatype.getParamValue();
- }
-
- public String getShortDatatype() {
- String dt = this.getDatatype();
- if (dt == null) {
- return null;
- }
- return XACMLConstants.extractShortName(dt);
- }
-
- public PIPResolverParam getDatatypeParam() {
- return this.datatype;
- }
-
- public void setDatatype(String datatype) {
- if (this.datatype == null) {
- this.datatype = new PIPResolverParam();
- this.datatype.setParamName(this.prefix + this.identifier + ".datatype");
- }
- this.datatype.setParamValue(datatype);
- }
-
- public void setDatatype(PIPResolverParam param) {
- this.datatype = param;
- }
-
- public String getIssuer() {
- if (this.issuer == null) {
- return null;
- }
- return this.issuer.getParamValue();
- }
-
- public String getShortIssuer() {
- String issuer = this.getIssuer();
- if (issuer == null) {
- return null;
- }
- return XACMLConstants.extractShortName(issuer);
- }
-
- public PIPResolverParam getIssuerParam() {
- return this.issuer;
- }
-
- public void setIssuer(String issuer) {
- if (this.issuer == null) {
- this.issuer = new PIPResolverParam();
- this.issuer.setParamName(this.prefix + this.identifier + ".issuer");
- }
- this.issuer.setParamValue(issuer);
- }
-
- public void setIssuer(PIPResolverParam param) {
- this.issuer = param;
- }
-
- public Integer getColumn() {
- if (this.column == null) {
- return null;
- }
- try {
- return Integer.parseInt(this.column.getParamValue());
- } catch (NumberFormatException e) {
- logger.error("Failed to set column: " + e);
- return null;
- }
- }
-
- public PIPResolverParam getColumnParam() {
- return this.column;
- }
-
- public void setColumn(Integer col) {
- if (this.column == null) {
- this.column = new PIPResolverParam();
- this.column.setParamName(this.prefix + this.identifier + "column");
- }
- this.column.setParamValue(col.toString());
- }
-
- public void setColumn(PIPResolverParam param) {
- this.column = param;
- }
-
- public void setResolver(PIPResolver resolver) {
- if (this.id != null) {
- this.id.setPipresolver(resolver);
- }
- if (this.category != null) {
- this.category.setPipresolver(resolver);
- }
- if (this.datatype != null) {
- this.datatype.setPipresolver(resolver);
- }
- if (this.issuer != null) {
- this.issuer.setPipresolver(resolver);
- }
- if (this.column != null) {
- this.column.setPipresolver(resolver);
- }
- }
- }
-
- private static final long serialVersionUID = 1L;
- private static final Log logger = LogFactory.getLog(PIPSQLResolverEditorWindow.class);
- private final PIPSQLResolverEditorWindow self = this;
- private final EntityItem<PIPResolver> entity;
- private final BeanItemContainer<ResolverAttribute> fieldsContainer = new BeanItemContainer<ResolverAttribute>(ResolverAttribute.class);
- private final BeanItemContainer<ResolverAttribute> parametersContainer = new BeanItemContainer<ResolverAttribute>(ResolverAttribute.class);
- private final BasicNotifier notifier = new BasicNotifier();
- boolean isSaved = false;
- String fieldPrefix;
- String parameterPrefix;
-
- /**
- * The constructor should first build the main layout, set the
- * composition root and then do any custom initialization.
- *
- * The constructor will not be automatically regenerated by the
- * visual editor.
- */
- public PIPSQLResolverEditorWindow(EntityItem<PIPResolver> entity) {
- buildMainLayout();
- setCompositionRoot(mainLayout);
- //
- // Save
- //
- this.entity = entity;
- //
- // Initialize
- //
- this.initialize();
- }
-
- protected boolean isSQL() {
- if (this.entity.getEntity().getPipconfiguration().getPiptype().isSQL() ||
- this.entity.getEntity().getPipconfiguration().getPiptype().isHyperCSV()) {
- return true;
- }
- return false;
- }
-
- protected boolean isLDAP() {
- return this.entity.getEntity().getPipconfiguration().getPiptype().isLDAP();
- }
-
- protected boolean isCSV() {
- return this.entity.getEntity().getPipconfiguration().getPiptype().isCSV();
- }
-
- protected void initialize() {
- //
- // Initialize entity
- //
- this.initializeEntity();
- //
- // Go through the parameters, save them into a
- // properties object.
- //
- boolean sourceInitialized = false;
- boolean attributeInitialized = false;
- for (PIPResolverParam param : this.entity.getEntity().getPipresolverParams()) {
- //
- // Look for ones we know about
- //
- if (param.getParamName().equalsIgnoreCase("select")) {
- this.textAreaSelect.setValue(param.getParamValue());
- this.textAreaSelect.setData(param);
- } else if (param.getParamName().equals("fields") || param.getParamName().equals("filter.view")) {
- this.initializeSourceTable(param.getParamValue());
- this.tableRequiredAttributes.setData(param);
- sourceInitialized = true;
- } else if (param.getParamName().equals("parameters") || param.getParamName().equals("filter.parameters")) {
- this.initializeAttributeTable(param.getParamValue());
- this.tableAttributes.setData(param);
- attributeInitialized = true;
- } else if (param.getParamName().equalsIgnoreCase("base")) {
- this.textFieldBase.setValue(param.getParamValue());
- this.textFieldBase.setData(param);
- } else if (param.getParamName().equalsIgnoreCase("filter")) {
- this.textFieldFilter.setValue(param.getParamValue());
- this.textFieldFilter.setData(param);
- }
- }
- //
- // Initialize GUI
- //
- this.initializeText();
- this.initializeCheckBox();
- //
- // Verify the tables get setup, if this is a new object
- // then they haven't been.
- //
- if (sourceInitialized == false) {
- this.initializeSourceTable("");
- }
- if (attributeInitialized == false) {
- this.initializeAttributeTable("");
- }
- }
-
- protected void initializeEntity() {
- //
- // Make sure the classname is set correctly
- //
- if (this.isSQL()) {
- //
- //
- //
- this.fieldPrefix = "field.";
- this.parameterPrefix = "parameter.";
- this.entity.getEntity().setClassname(ConfigurableJDBCResolver.class.getCanonicalName());
- } else if (this.isLDAP()) {
- //
- //
- //
- this.fieldPrefix = "filter.view.";
- this.parameterPrefix = "filter.parameters.";
- this.entity.getEntity().setClassname(ConfigurableLDAPResolver.class.getCanonicalName());
- } else if (this.isCSV()) {
- //
- //
- //
- this.fieldPrefix = "field.";
- this.parameterPrefix = "parameter.";
- this.entity.getEntity().setClassname(ConfigurableCSVResolver.class.getCanonicalName());
- }
- }
-
- protected void initializeText() {
- //
- // Are we SQL or LDAP?
- //
- if (this.isSQL()) {
- //
- // Turn these off
- //
- this.textFieldBase.setRequired(false);
- this.textFieldBase.setVisible(false);
- this.textFieldFilter.setRequired(false);
- this.textFieldFilter.setVisible(false);
- //
- // GUI properties
- //
- this.textAreaSelect.setImmediate(true);
- //
- // Respond to changes
- //
- this.textAreaSelect.addValueChangeListener(new ValueChangeListener() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void valueChange(ValueChangeEvent event) {
- PIPResolverParam param = (PIPResolverParam) self.textAreaSelect.getData();
- if (param == null) {
- param = new PIPResolverParam();
- param.setPipresolver(self.entity.getEntity());
- param.setParamName("select");
- self.entity.getEntity().addPipresolverParam(param);
- self.textAreaSelect.setData(param);
- }
- param.setParamValue(self.textAreaSelect.getValue());
- self.fireFormChangedEvent();
- }
- });
- } else if (this.isLDAP()) {
- //
- // Turn these off
- //
- this.textAreaSelect.setRequired(false);
- this.textAreaSelect.setVisible(false);
- //
- //
- //
- this.textFieldBase.setImmediate(true);
- this.textFieldBase.addValueChangeListener(new ValueChangeListener() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void valueChange(ValueChangeEvent event) {
- PIPResolverParam param = (PIPResolverParam) self.textFieldBase.getData();
- if (param == null) {
- param = new PIPResolverParam();
- param.setPipresolver(self.entity.getEntity());
- param.setParamName("base");
- self.entity.getEntity().addPipresolverParam(param);
- self.textFieldBase.setData(param);
- }
- param.setParamValue(self.textFieldBase.getValue());
- self.fireFormChangedEvent();
- }
- });
- //
- //
- //
- this.textFieldFilter.setImmediate(true);
- this.textFieldFilter.addValueChangeListener(new ValueChangeListener() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void valueChange(ValueChangeEvent event) {
- PIPResolverParam param = (PIPResolverParam) self.textFieldFilter.getData();
- if (param == null) {
- param = new PIPResolverParam();
- param.setPipresolver(self.entity.getEntity());
- param.setParamName("filter");
- self.entity.getEntity().addPipresolverParam(param);
- self.textFieldFilter.setData(param);
- }
- param.setParamValue(self.textFieldFilter.getValue());
- self.fireFormChangedEvent();
- }
- });
- } else if (this.isCSV()) {
- //
- // Turn these off
- //
- this.textAreaSelect.setRequired(false);
- this.textAreaSelect.setVisible(false);
- this.textFieldBase.setRequired(false);
- this.textFieldBase.setVisible(false);
- this.textFieldFilter.setRequired(false);
- this.textFieldFilter.setVisible(false);
- }
- }
-
- protected void initializeCheckBox() {
- this.checkBoxShortIds.setValue(true);
- this.checkBoxShortIds.setImmediate(true);
- this.checkBoxShortIds.addValueChangeListener(new ValueChangeListener() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void valueChange(ValueChangeEvent event) {
- if (self.checkBoxShortIds.getValue()) {
- self.tableRequiredAttributes.setColumnCollapsed("id", true);
- self.tableRequiredAttributes.setColumnCollapsed("category", true);
- self.tableRequiredAttributes.setColumnCollapsed("datatype", true);
- self.tableRequiredAttributes.setColumnCollapsed("shortId", false);
- self.tableRequiredAttributes.setColumnCollapsed("shortCategory", false);
- self.tableRequiredAttributes.setColumnCollapsed("shortDatatype", false);
- } else {
- self.tableRequiredAttributes.setColumnCollapsed("id", false);
- self.tableRequiredAttributes.setColumnCollapsed("category", false);
- self.tableRequiredAttributes.setColumnCollapsed("datatype", false);
- self.tableRequiredAttributes.setColumnCollapsed("shortId", true);
- self.tableRequiredAttributes.setColumnCollapsed("shortCategory", true);
- self.tableRequiredAttributes.setColumnCollapsed("shortDatatype", true);
- }
- }
- });
- }
-
- protected void initializeSourceTable(String fields) {
- //
- // Add data into the container
- //
- this.populateData(this.fieldPrefix, fields, this.fieldsContainer);
- //
- // Set GUI properties
- //
- this.tableRequiredAttributes.setContainerDataSource(this.fieldsContainer);
- this.tableRequiredAttributes.setPageLength((this.fieldsContainer.size() == 0 ? 3 : this.fieldsContainer.size() + 1));
- this.tableRequiredAttributes.setSizeFull();
- this.tableRequiredAttributes.setColumnCollapsingAllowed(true);
- this.tableRequiredAttributes.setVisibleColumns(new Object[] {"identifier", "id", "category", "datatype", "shortId", "shortCategory", "shortDatatype"});
- this.tableRequiredAttributes.setColumnHeaders(new String[] {"Field", "Attribute Id", "Category", "Data Type", "Attribute Id", "Category", "Data Type"});
- this.tableRequiredAttributes.setColumnCollapsed("id", true);
- this.tableRequiredAttributes.setColumnCollapsed("category", true);
- this.tableRequiredAttributes.setColumnCollapsed("datatype", true);
- this.tableRequiredAttributes.setSelectable(true);
- //
- // Setup its handler
- //
- this.tableRequiredAttributes.addActionHandler(this);
- //
- // Respond to events
- //
- this.tableRequiredAttributes.addItemClickListener(new ItemClickListener() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void itemClick(ItemClickEvent event) {
- if (event.isDoubleClick()) {
- Object id = event.getItemId();
- if (id == null) {
- //
- // Really shouldn't get here
- //
- return;
- }
- BeanItem<ResolverAttribute> beanItem = self.fieldsContainer.getItem(id);
- if (beanItem == null) {
- //
- // Again, shouldn't get here
- //
- return;
- }
- self.editAttribute(self.tableRequiredAttributes, beanItem.getBean());
- }
- }
- });
- }
-
- protected void initializeAttributeTable(String parameters) {
- //
- // Add data into the container
- //
- this.populateData(this.parameterPrefix, parameters, this.parametersContainer);
- //
- // setup gui properties
- //
- this.tableAttributes.setContainerDataSource(this.parametersContainer);
- this.tableAttributes.setPageLength(this.parametersContainer.size() + 1);
- this.tableAttributes.setSizeFull();
- this.tableAttributes.setColumnCollapsingAllowed(true);
- this.tableAttributes.setVisibleColumns(new Object[] {"identifier", "id", "category", "datatype", "shortId", "shortCategory", "shortDatatype"});
- this.tableAttributes.setColumnHeaders(new String[] {"Position", "Attribute Id", "Category", "Data Type", "Attribute Id", "Category", "Data Type"});
- this.tableAttributes.setColumnCollapsed("id", true);
- this.tableAttributes.setColumnCollapsed("category", true);
- this.tableAttributes.setColumnCollapsed("datatype", true);
- this.tableAttributes.setSelectable(true);
- //
- // Setup its handler
- //
- this.tableAttributes.addActionHandler(this);
- //
- // Respond to events
- //
- this.tableAttributes.addItemClickListener(new ItemClickListener() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void itemClick(ItemClickEvent event) {
- if (event.isDoubleClick()) {
- Object id = event.getItemId();
- if (id == null) {
- //
- // Really shouldn't get here
- //
- return;
- }
- BeanItem<ResolverAttribute> beanItem = self.parametersContainer.getItem(id);
- if (beanItem == null) {
- //
- // Again, shouldn't get here
- //
- return;
- }
- self.editAttribute(self.tableAttributes, beanItem.getBean());
- }
- }
- });
- }
-
- protected void populateData(String prefix, String list, BeanItemContainer<ResolverAttribute> container) {
- for (String field : Splitter.on(',').trimResults().omitEmptyStrings().split(list)) {
- //
- // Create a bean for this field
- //
- ResolverAttribute bean = new ResolverAttribute(prefix, field);
- //
- // Now try to find the attribute information
- //
- for (PIPResolverParam param : this.entity.getEntity().getPipresolverParams()) {
- if (param.getParamName().equals(prefix + field + ".id")) {
- bean.setId(param);
- } else if (param.getParamName().equals(prefix + field + ".category")) {
- bean.setCategory(param);
- } else if (param.getParamName().equals(prefix + field + ".datatype")) {
- bean.setDatatype(param);
- } else if (param.getParamName().equals(prefix + field + ".issuer")) {
- bean.setIssuer(param);
- } else if (param.getParamName().equals(prefix + field + ".column")) {
- bean.setColumn(param);
- }
- }
- container.addBean(bean);
- }
- }
-
- @Override
- public Action[] getActions(Object target, Object sender) {
- if (target == null) {
- return new Action[] {ADD_ATTRIBUTE};
- }
- return new Action[] {EDIT_ATTRIBUTE, CLONE_ATTRIBUTE, REMOVE_ATTRIBUTE};
- }
-
- @Override
- public void handleAction(Action action, Object sender, Object target) {
- if (action == ADD_ATTRIBUTE) {
- if (sender.equals(this.tableRequiredAttributes)) {
- this.editAttribute(self.tableRequiredAttributes, null);
- } else {
- this.editAttribute(self.tableAttributes, null);
- }
- return;
- }
- if (action == EDIT_ATTRIBUTE) {
- assert target instanceof ResolverAttribute;
- if (sender.equals(this.tableRequiredAttributes)) {
- this.editAttribute(self.tableRequiredAttributes, (ResolverAttribute) target);
- } else {
- this.editAttribute(self.tableAttributes, (ResolverAttribute) target);
- }
- return;
- }
- if (action == CLONE_ATTRIBUTE) {
- assert target instanceof ResolverAttribute;
- try {
- //
- // Which table?
- //
- if (sender.equals(this.tableRequiredAttributes)) {
- //
- // Clone the attribute giving it a new
- // field name.
- //
- ResolverAttribute clone = new ResolverAttribute(this.fieldPrefix, this.getNextField(), (ResolverAttribute) target);
- //
- // Add it to the container
- //
- this.fieldsContainer.addBean(clone);
- //
- // Reset the page length so we can see it and have room
- // to add another.
- //
- this.tableRequiredAttributes.setPageLength(this.fieldsContainer.size() + 1);
- //
- // Select it
- //
- this.tableRequiredAttributes.select(clone);
- } else {
- //
- // Clone the attribute giving it a new
- // field name.
- //
- ResolverAttribute clone = new ResolverAttribute(this.parameterPrefix, this.getNextParameter(), (ResolverAttribute) target);
- //
- // Add it to the container
- //
- this.parametersContainer.addBean(clone);
- //
- // Reset the page length so we can see it and have room
- // to add another.
- //
- this.tableAttributes.setPageLength(this.parametersContainer.size() + 1);
- //
- // Select it
- //
- this.tableAttributes.select(clone);
- }
- //
- // We have changed
- //
- this.fireFormChangedEvent();
- } catch (Exception e) {
- logger.error("Failed to clone: " + e);
- }
- return;
- }
- if (action == REMOVE_ATTRIBUTE) {
- assert target instanceof ResolverAttribute;
- //
- // Help method to remove the attribute
- //
- this.removeAttribute((ResolverAttribute) target);
- //
- // Which table?
- //
- if (sender.equals(this.tableRequiredAttributes)) {
- //
- // Now remove it from the table
- //
- this.tableRequiredAttributes.removeItem(target);
- } else {
- //
- // Now remove it from the table
- //
- this.tableAttributes.removeItem(target);
- }
- //
- // we have changed
- //
- this.fireFormChangedEvent();
- return;
- }
- }
-
- protected void removeAttribute(ResolverAttribute target) {
- this.entity.getEntity().removePipresolverParam(target.getIdParam());
- this.entity.getEntity().removePipresolverParam(target.getCategoryParam());
- this.entity.getEntity().removePipresolverParam(target.getDatatypeParam());
- this.entity.getEntity().removePipresolverParam(target.getIssuerParam());
- }
-
- protected void editAttribute(final Table table, final ResolverAttribute request) {
- if (this.isCSV()) {
- this.editCSVAttribute(table, request);
- } else {
- this.editResolverAttribute(table, request, null);
- }
- }
-
- protected void editCSVAttribute(final Table table, final ResolverAttribute request) {
- assert this.isCSV();
- //
- // Prompt for the column
- //
- final ColumnSelectionWindow window = new ColumnSelectionWindow((request != null ? request.getColumn() : 0));
- if (request == null) {
- window.setCaption("Input the CSV Column for the new attribute");
- } else {
- window.setCaption("Edit the CSV Column for the attribute");
- }
- window.setModal(true);
- window.center();
- window.addCloseListener(new CloseListener() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void windowClose(CloseEvent e) {
- //
- // Did the user save?
- //
- if (window.isSaved() == false) {
- return;
- }
- //
- // Save it if its not a new
- //
- if (request != null) {
- request.setColumn(window.getColumn());
- }
- //
- // Now we select the attribute, pass the column
- // in case this is a brand new attribute. Yeah its messy.
- //
- self.editResolverAttribute(table, request, window.getColumn());
- }
- });
- window.center();
- UI.getCurrent().addWindow(window);
- }
-
- protected void editResolverAttribute(final Table table, final ResolverAttribute request, final Integer column) {
- //
- // Provide objects to the attribute selection window
- //
- AttributeDesignatorType designator = new AttributeDesignatorType();
- if (request == null) {
- designator.setAttributeId(XACML3.ID_SUBJECT_SUBJECT_ID.stringValue());
- designator.setCategory(XACML3.ID_SUBJECT_CATEGORY_ACCESS_SUBJECT.stringValue());
- designator.setDataType(XACML3.ID_DATATYPE_STRING.stringValue());
- designator.setIssuer(this.entity.getEntity().getIssuer());
- } else {
- designator.setAttributeId(request.getId());
- designator.setCategory(request.getCategory());
- designator.setDataType(request.getDatatype());
- designator.setIssuer(request.getIssuer());
- }
- //
- // Have user select an attribute
- //
- final AttributeSelectionWindow selection = new AttributeSelectionWindow(null, designator);
- selection.setModal(true);
- selection.setCaption("Select Attribute");
- selection.addCloseListener(new CloseListener() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void windowClose(CloseEvent event) {
- //
- // User click Save button?
- //
- if (selection.isSaved() == false) {
- return;
- }
- //
- // Yes - get the final attribute
- //
- Attribute attribute = selection.getAttribute();
- //
- // Is it a new one?
- //
- if (request == null) {
- try {
- //
- // Create a new bean
- //
- ResolverAttribute bean = null;
- if (table.equals(self.tableRequiredAttributes)) {
- bean = new ResolverAttribute(self.fieldPrefix, self.getNextField());
- } else {
- bean = new ResolverAttribute(self.parameterPrefix, self.getNextParameter());
- }
- bean.setId(attribute.getXacmlId());
- bean.setCategory(attribute.getCategoryBean().getXacmlId());
- bean.setDatatype(attribute.getDatatypeBean().getXacmlId());
- if (attribute.getIssuer() != null) {
- bean.setIssuer(attribute.getIssuer());
- }
- if (column != null) {
- bean.setColumn(column);
- }
- //
- // Add it to the resolver
- //
- bean.setResolver(self.entity.getEntity());
- self.entity.getEntity().addPipresolverParam(bean.getIdParam());
- self.entity.getEntity().addPipresolverParam(bean.getCategoryParam());
- self.entity.getEntity().addPipresolverParam(bean.getDatatypeParam());
- if (bean.getIssuer() != null) {
- self.entity.getEntity().addPipresolverParam(bean.getIssuerParam());
- }
- //
- // Which table?
- //
- if (table.equals(self.tableRequiredAttributes)) {
- //
- // Add to table
- //
- self.fieldsContainer.addBean(bean);
- //
- // Reset the page length
- //
- self.tableRequiredAttributes.setPageLength(self.fieldsContainer.size() + 1);
- } else if (table.equals(self.tableAttributes)) {
- //
- // Add to table
- //
- self.parametersContainer.addBean(bean);
- //
- // Reset the page length
- //
- self.tableAttributes.setPageLength(self.parametersContainer.size() + 1);
- }
- if (logger.isDebugEnabled()) {
- logger.debug("Added new attribute: " + bean);
- }
- } catch (Exception e) {
- logger.error(e);
- AdminNotification.error("Unable to add another required attribute field");
- }
- } else {
- //
- // Update the table entry
- //
- request.setId(attribute.getXacmlId());
- request.setCategory(attribute.getCategoryBean().getXacmlId());
- request.setDatatype(attribute.getDatatypeBean().getXacmlId());
- request.setIssuer(attribute.getIssuer());
- //
- // Let the table know
- //
- table.refreshRowCache();
- }
- //
- // we have changed
- //
- self.fireFormChangedEvent();
- }
- });
- selection.center();
- UI.getCurrent().addWindow(selection);
- }
-
- protected String getNextField() throws Exception {
- //
- // Start at the next index number. NOTE: The GUI needs
- // to use numbers to index the fields.
- //
- int index = this.tableRequiredAttributes.size() + 1;
- //
- // Really if we get to 100, that's an insane number of fields
- // needed for a SQL query.
- //
- while (index < 100) {
- String field = String.format("%02d", index);
- boolean exists = false;
- for (Object id : this.tableRequiredAttributes.getItemIds()) {
- @SuppressWarnings("unchecked")
- BeanItem<ResolverAttribute> required = (BeanItem<ResolverAttribute>) this.tableRequiredAttributes.getItem(id);
- if (required.getBean().getIdentifier().equals(field)) {
- exists = true;
- index++;
- break;
- }
- }
- if (exists == false) {
- return field;
- }
- }
- //
- // Sanity check
- //
- throw new Exception("Unable to find a next field name. Are there too many fields?");
- }
-
- protected String getNextParameter() throws Exception {
- //
- // Start at the next index number. NOTE: The GUI needs
- // to use numbers to index the fields.
- //
- int index = this.tableAttributes.size() + 1;
- //
- // Really if we get to 100, that's an insane number of fields
- // needed for a SQL query.
- //
- while (index < 100) {
- String field = String.format("%02d", index);
- boolean exists = false;
- for (Object id : this.tableAttributes.getItemIds()) {
- @SuppressWarnings("unchecked")
- BeanItem<ResolverAttribute> required = (BeanItem<ResolverAttribute>) this.tableAttributes.getItem(id);
- if (required.getBean().getIdentifier().equals(field)) {
- exists = true;
- index++;
- break;
- }
- }
- if (exists == false) {
- return field;
- }
- }
- //
- // Sanity check
- //
- throw new Exception("Unable to find a next parameter name. Are there too many parameters?");
- }
-
- public void discard() throws SourceException {
- if (this.isSQL()) {
- this.textAreaSelect.discard();
- } else if (this.isLDAP()) {
- this.textFieldBase.discard();
- this.textFieldFilter.discard();
- // } else if (this.isCSV()) {
- }
- }
-
- public void validate() throws InvalidValueException {
- if (this.isSQL()) {
- this.textAreaSelect.validate();
- } else if (this.isLDAP()) {
- this.textFieldBase.validate();
- this.textFieldFilter.validate();
- //} else if (this.isCSV()) {
-
- }
- }
-
- public void commit() throws SourceException, InvalidValueException {
- //
- // Commit required fields
- //
- if (this.isSQL()) {
- this.textAreaSelect.commit();
- } else if (this.isLDAP()) {
- this.textFieldBase.commit();
- this.textFieldFilter.commit();
- // } else if (this.isCSV()) {
- }
- //
- // Setup the fields
- //
- {
- List<String> fields = new ArrayList<String>(this.fieldsContainer.size());
- for (ResolverAttribute attribute : this.fieldsContainer.getItemIds()) {
- fields.add(attribute.getIdentifier());
- }
- PIPResolverParam param = (PIPResolverParam) this.tableRequiredAttributes.getData();
- if (param == null) {
- param = new PIPResolverParam();
- if (this.isSQL()) {
- param.setParamName("fields");
- } else if (this.isLDAP()) {
- param.setParamName("filter.view");
- } else if (this.isCSV()) {
- param.setParamName("fields");
- }
- this.entity.getEntity().addPipresolverParam(param);
- this.tableRequiredAttributes.setData(param);
- }
- param.setParamValue(Joiner.on(',').join(fields));
- }
- //
- // Setup the parameters
- //
- {
- List<String> parameters = new ArrayList<String>(this.parametersContainer.size());
- for (ResolverAttribute attribute : this.parametersContainer.getItemIds()) {
- parameters.add(attribute.getIdentifier());
- }
- PIPResolverParam param = (PIPResolverParam) this.tableAttributes.getData();
- if (param == null) {
- param = new PIPResolverParam();
- if (this.isSQL()) {
- param.setParamName("parameters");
- } else if (this.isLDAP()) {
- param.setParamName("filter.parameters");
- } else if (this.isCSV()) {
- param.setParamName("parameters");
- }
- this.entity.getEntity().addPipresolverParam(param);
- this.tableAttributes.setData(param);
- }
- param.setParamValue(Joiner.on(',').join(parameters));
- }
- }
-
- public boolean isSaved() {
- return this.isSaved;
- }
-
- @Override
- public boolean addListener(FormChangedEventListener listener) {
- return this.notifier.addListener(listener);
- }
-
- @Override
- public boolean removeListener(FormChangedEventListener listener) {
- return this.notifier.removeListener(listener);
- }
-
- @Override
- public void fireFormChangedEvent() {
- this.notifier.fireFormChangedEvent();
- }
-
- @AutoGenerated
- private VerticalLayout buildMainLayout() {
- // common part: create layout
- mainLayout = new VerticalLayout();
- mainLayout.setImmediate(false);
- mainLayout.setWidth("-1px");
- mainLayout.setHeight("-1px");
- mainLayout.setMargin(true);
- mainLayout.setSpacing(true);
-
- // top-level component properties
- setWidth("-1px");
- setHeight("-1px");
-
- // textAreaSelect
- textAreaSelect = new TextArea();
- textAreaSelect.setCaption("SQL Select Statement");
- textAreaSelect.setImmediate(false);
- textAreaSelect.setWidth("100.0%");
- textAreaSelect.setHeight("-1px");
- textAreaSelect.setInvalidAllowed(false);
- textAreaSelect.setRequired(true);
- mainLayout.addComponent(textAreaSelect);
- mainLayout.setExpandRatio(textAreaSelect, 1.0f);
-
- // textFieldBase
- textFieldBase = new TextField();
- textFieldBase.setCaption("Base DN");
- textFieldBase.setImmediate(false);
- textFieldBase.setWidth("-1px");
- textFieldBase.setHeight("-1px");
- mainLayout.addComponent(textFieldBase);
-
- // textFieldFilter
- textFieldFilter = new TextField();
- textFieldFilter.setCaption("Filter");
- textFieldFilter.setImmediate(false);
- textFieldFilter.setWidth("-1px");
- textFieldFilter.setHeight("-1px");
- mainLayout.addComponent(textFieldFilter);
-
- // checkBoxShortIds
- checkBoxShortIds = new CheckBox();
- checkBoxShortIds.setCaption("Display short id’s.");
- checkBoxShortIds.setImmediate(false);
- checkBoxShortIds.setWidth("-1px");
- checkBoxShortIds.setHeight("-1px");
- mainLayout.addComponent(checkBoxShortIds);
-
- // tableRequiredAttributes
- tableRequiredAttributes = new Table();
- tableRequiredAttributes.setCaption("Attributes Returned");
- tableRequiredAttributes.setImmediate(false);
- tableRequiredAttributes.setWidth("-1px");
- tableRequiredAttributes.setHeight("-1px");
- mainLayout.addComponent(tableRequiredAttributes);
-
- // tableAttributes
- tableAttributes = new Table();
- tableAttributes.setCaption("Parameters - Attributes Needed (i.e. ?)");
- tableAttributes.setImmediate(false);
- tableAttributes.setWidth("-1px");
- tableAttributes.setHeight("-1px");
- tableAttributes.setInvalidAllowed(false);
- tableAttributes.setRequired(true);
- mainLayout.addComponent(tableAttributes);
-
- return mainLayout;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-openaz/blob/c68f98c5/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PolicyEditorWindow.java
----------------------------------------------------------------------
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PolicyEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PolicyEditorWindow.java
deleted file mode 100644
index f9d70c8..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PolicyEditorWindow.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.openaz.xacml.admin.view.windows;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.jpa.RuleAlgorithms;
-import org.apache.openaz.xacml.admin.util.JPAUtils;
-import org.apache.openaz.xacml.api.XACML3;
-import com.vaadin.addon.jpacontainer.JPAContainer;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Buffered.SourceException;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.data.validator.RegexpValidator;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.AbstractSelect.ItemCaptionMode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.Label;
-import com.vaadin.ui.ListSelect;
-import com.vaadin.ui.TextArea;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class PolicyEditorWindow extends Window {
-
- /*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
- @AutoGenerated
- private VerticalLayout mainLayout;
- @AutoGenerated
- private Button buttonSave;
- @AutoGenerated
- private TextArea textAreaDescription;
- @AutoGenerated
- private ListSelect listSelectAlgorithm;
- @AutoGenerated
- private TextField textFieldVersion;
- @AutoGenerated
- private Label labelID;
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private final PolicyEditorWindow self = this;
- private final PolicyType policy;
- private JPAContainer<RuleAlgorithms> algorithms = ((XacmlAdminUI)UI.getCurrent()).getRuleAlgorithms();
- private boolean isSaved = false;
- /**
- * The constructor should first build the main layout, set the
- * composition root and then do any custom initialization.
- *
- * The constructor will not be automatically regenerated by the
- * visual editor.
- */
- public PolicyEditorWindow(PolicyType policy) {
- buildMainLayout();
- //setCompositionRoot(mainLayout);
- setContent(mainLayout);
- //
- // Save
- //
- this.policy = policy;
- //
- // Close shortcut
- //
- this.setCloseShortcut(KeyCode.ESCAPE);
- //
- // Initialize GUI
- //
- this.initializeLabel();
- this.initializeText();
- this.initializeSelect();
- this.initializeButton();
- //
- // Focus
- //
- this.textAreaDescription.focus();
- }
-
- protected void initializeLabel() {
- if (this.policy.getPolicyId() == null) {
- this.policy.setPolicyId(((XacmlAdminUI)UI.getCurrent()).newPolicyID());
- }
- this.labelID.setValue(this.policy.getPolicyId());
- }
-
- protected void initializeText() {
- //
- //
- //
- this.textAreaDescription.setNullRepresentation("");
- this.textAreaDescription.setValue(this.policy.getDescription());
- //
- //
- //
- if (this.policy.getVersion() == null) {
- this.policy.setVersion("1");
- }
- this.textFieldVersion.setRequiredError("The exact format is: ((\\d+|\\*)\\.)*(\\d+|\\*|\\+)");
- this.textFieldVersion.addValidator(new RegexpValidator("((\\d+|\\*)\\.)*(\\d+|\\*|\\+)", true, "The version MUST a number optionally separated by '.' eg. 1 or 1.0 or 1.1.1 etc."));
- this.textFieldVersion.setValue(this.policy.getVersion());
- }
-
- protected void initializeSelect() {
- this.listSelectAlgorithm.setContainerDataSource(this.algorithms);
- this.listSelectAlgorithm.setItemCaptionMode(ItemCaptionMode.PROPERTY);
- this.listSelectAlgorithm.setItemCaptionPropertyId("xacmlId");
- this.listSelectAlgorithm.setNullSelectionAllowed(false);
-
- if (this.policy.getRuleCombiningAlgId() == null) {
- this.policy.setRuleCombiningAlgId(XACML3.ID_RULE_FIRST_APPLICABLE.stringValue());
- }
- this.listSelectAlgorithm.setValue(JPAUtils.findRuleAlgorithm(this.policy.getRuleCombiningAlgId()).getId());
- }
-
- protected void initializeButton() {
- this.buttonSave.addClickListener(new ClickListener() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void buttonClick(ClickEvent event) {
- try {
- //
- // Commit
- //
- self.listSelectAlgorithm.commit();
- self.textFieldVersion.commit();
- self.textAreaDescription.commit();
- //
- // Save everything
- //
- self.policy.setDescription(self.textAreaDescription.getValue());
- self.policy.setVersion(self.textFieldVersion.getValue());
- Object id = self.listSelectAlgorithm.getValue();
- self.policy.setRuleCombiningAlgId(algorithms.getItem(id).getEntity().getXacmlId());
- //
- // Mark ourselves as saved
- //
- self.isSaved = true;
- //
- // Close window
- //
- self.close();
- } catch (SourceException | InvalidValueException e) { //NOPMD
- //
- // VAADIN will show the required error message to the user
- //
- }
- }
- });
- }
-
- public boolean isSaved() {
- return this.isSaved;
- }
-
- public PolicyType getPolicySet() {
- return this.policy;
- }
-
- @AutoGenerated
- private VerticalLayout buildMainLayout() {
- // common part: create layout
- mainLayout = new VerticalLayout();
- mainLayout.setImmediate(false);
- mainLayout.setWidth("-1px");
- mainLayout.setHeight("-1px");
- mainLayout.setMargin(true);
- mainLayout.setSpacing(true);
-
- // top-level component properties
- setWidth("-1px");
- setHeight("-1px");
-
- // labelID
- labelID = new Label();
- labelID.setCaption("Policy Set ID");
- labelID.setImmediate(false);
- labelID.setWidth("100.0%");
- labelID.setHeight("-1px");
- labelID.setValue("Label");
- mainLayout.addComponent(labelID);
-
- // textFieldVersion
- textFieldVersion = new TextField();
- textFieldVersion.setCaption("Version");
- textFieldVersion.setImmediate(false);
- textFieldVersion
- .setDescription("The format is numbers only separated by decimal point.");
- textFieldVersion.setWidth("-1px");
- textFieldVersion.setHeight("-1px");
- textFieldVersion.setInvalidAllowed(false);
- textFieldVersion.setRequired(true);
- textFieldVersion.setInputPrompt("Eg. 1 or 1.0 or 1.0.0 etc.");
- mainLayout.addComponent(textFieldVersion);
-
- // listSelectAlgorithm
- listSelectAlgorithm = new ListSelect();
- listSelectAlgorithm.setCaption("Policy Combining Algorithm");
- listSelectAlgorithm.setImmediate(false);
- listSelectAlgorithm.setWidth("100.0%");
- listSelectAlgorithm.setHeight("-1px");
- listSelectAlgorithm.setInvalidAllowed(false);
- listSelectAlgorithm.setRequired(true);
- mainLayout.addComponent(listSelectAlgorithm);
-
- // textAreaDescription
- textAreaDescription = new TextArea();
- textAreaDescription.setCaption("Description");
- textAreaDescription.setImmediate(false);
- textAreaDescription.setWidth("100.0%");
- textAreaDescription.setHeight("-1px");
- mainLayout.addComponent(textAreaDescription);
- mainLayout.setExpandRatio(textAreaDescription, 1.0f);
-
- // buttonSave
- buttonSave = new Button();
- buttonSave.setCaption("Save");
- buttonSave.setImmediate(true);
- buttonSave.setWidth("-1px");
- buttonSave.setHeight("-1px");
- mainLayout.addComponent(buttonSave);
- mainLayout.setComponentAlignment(buttonSave, new Alignment(48));
-
- return mainLayout;
- }
-
-}