Search in sources :

Example 81 with Entity

use of com.ibm.watson.assistant.v1.model.Entity in project dna by leifeld.

the class Popup method saveContents.

/**
 * In a statement popup window, read the contents from all combo boxes and
 * save them into the database.
 *
 * @param simulate  If true, do not actually write the changes.
 * @return          True if at least one of the values has changed.
 */
boolean saveContents(boolean simulate) {
    boolean changed = false;
    Component[] com = this.gridBagPanel.getComponents();
    int i, j;
    try {
        for (i = 0; i < com.length; i++) {
            // the value of a variable, e.g., "EPA"
            Object content = null;
            // the name of the variable, e.g., "organization"
            String variableName;
            if (com[i].getClass().getName().equals("javax.swing.JComboBox")) {
                // short text
                variableName = ((JLabel) com[i - 1]).getText();
                @SuppressWarnings("unchecked") JComboBox<Entity> // save the combo box
                box = (JComboBox<Entity>) com[i];
                if (!((String) box.getSelectedItem().toString()).equals(box.getEditor().getItem().toString())) {
                    // make sure combo box edits are saved even if the editor has not lost its focus yet
                    box.setSelectedItem(box.getEditor().getItem());
                }
                Object object = box.getSelectedItem();
                Entity entity;
                if (object.getClass().getName().endsWith("String")) {
                    // if not an existing entity, the editor returns a String
                    String s = (String) object;
                    if (s.length() > 0 && s.matches("^\\s+$")) {
                        // replace a (multiple) whitespace string by an empty string
                        s = "";
                    }
                    s = s.substring(0, Math.min(190, s.length()));
                    // the new entity has an ID of -1; the SQL class needs to take care of this when writing into the database
                    entity = new Entity(s);
                } else {
                    entity = (Entity) box.getSelectedItem();
                }
                for (j = 0; j < this.variables.size(); j++) {
                    // update the variable corresponding to the variable name identified
                    if (this.variables.get(j).getKey().equals(variableName)) {
                        if (!((Entity) this.variables.get(j).getValue()).getValue().equals(entity.getValue())) {
                            if (simulate == false) {
                                this.variables.get(j).setValue(entity);
                            }
                            changed = true;
                        }
                    }
                }
            } else if (com[i].getClass().getName().equals("javax.swing.JScrollPane")) {
                // long text
                variableName = ((JLabel) com[i - 1]).getText();
                JScrollPane jsp = ((JScrollPane) com[i]);
                JTextArea jta = (JTextArea) jsp.getViewport().getView();
                content = jta.getText();
                if (content == null) {
                    content = "";
                }
                for (j = 0; j < this.variables.size(); j++) {
                    if (this.variables.get(j).getKey().equals(variableName)) {
                        if (!this.variables.get(j).getValue().equals(content)) {
                            if (simulate == false) {
                                this.variables.get(j).setValue(content);
                            }
                            changed = true;
                        }
                    }
                }
            } else if (com[i].getClass().getName().equals("javax.swing.JPanel")) {
                // integer
                variableName = ((JLabel) com[i - 1]).getText();
                JPanel jp = (JPanel) com[i];
                JSpinner jsp = (JSpinner) jp.getComponent(0);
                content = jsp.getValue();
                for (j = 0; j < this.variables.size(); j++) {
                    if (this.variables.get(j).getKey().equals(variableName)) {
                        if ((Integer) this.variables.get(j).getValue() != content) {
                            if (simulate == false) {
                                this.variables.get(j).setValue(content);
                            }
                            changed = true;
                        }
                    }
                }
            } else if (com[i].getClass().getName().endsWith("BooleanButtonPanel")) {
                // boolean
                variableName = ((JLabel) com[i - 1]).getText();
                content = ((BooleanButtonPanel) com[i]).isYes();
                int intBool;
                if ((Boolean) content == false) {
                    intBool = 0;
                } else {
                    intBool = 1;
                }
                for (j = 0; j < this.variables.size(); j++) {
                    if (this.variables.get(j).getKey().equals(variableName)) {
                        if ((Integer) this.variables.get(j).getValue() != intBool) {
                            if (simulate == false) {
                                this.variables.get(j).setValue(intBool);
                            }
                            changed = true;
                        }
                    }
                }
            }
        }
        if (this.coderComboBox != null && this.coder.getId() != ((Coder) coderComboBox.getSelectedItem()).getId()) {
            if (simulate == false) {
                this.coder = (Coder) coderComboBox.getSelectedItem();
            }
            changed = true;
        }
        if (changed == true && simulate == false) {
            // write changes into the database
            Dna.sql.updateStatement(this.statement.getId(), this.variables, this.coder.getId());
        }
    } catch (Exception e) {
        LogEvent l = new LogEvent(Logger.ERROR, "Could not update statement contents in the database.", "Read contents from popup and tried to save them in the SQL database, but something went wrong. Changes are being reverted. See exception for details.", e);
        Dna.logger.log(l);
    }
    return changed;
}
Also used : JScrollPane(javax.swing.JScrollPane) Entity(model.Entity) JPanel(javax.swing.JPanel) Coder(model.Coder) JTextArea(javax.swing.JTextArea) JComboBox(javax.swing.JComboBox) LogEvent(logger.LogEvent) JLabel(javax.swing.JLabel) Point(java.awt.Point) JSpinner(javax.swing.JSpinner) Component(java.awt.Component)

Example 82 with Entity

use of com.ibm.watson.assistant.v1.model.Entity in project dna by leifeld.

the class AttributeComboBoxRenderer method getListCellRendererComponent.

@Override
public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
    Entity a = (Entity) value;
    JLabel label = new JLabel(a.getValue());
    label.setForeground(a.getColor());
    // list background
    Color selectedColor = javax.swing.UIManager.getColor("List.selectionBackground");
    Color notInDatabaseColor = new Color(255, 102, 102);
    // selected entry that is not in database: average of the previous two colors
    Color selectedAndNotInDatabaseColor = new Color((selectedColor.getRed() + notInDatabaseColor.getRed()) / 2, (selectedColor.getGreen() + notInDatabaseColor.getGreen()) / 2, (selectedColor.getBlue() + notInDatabaseColor.getBlue()) / 2);
    Color defaultColor = javax.swing.UIManager.getColor("List.background");
    if (isSelected == true && a.isInDatabase() == true) {
        label.setBackground(selectedColor);
    } else if (isSelected == true && a.isInDatabase() == false) {
        label.setBackground(selectedAndNotInDatabaseColor);
    } else if (isSelected == false && a.isInDatabase() == false) {
        label.setBackground(notInDatabaseColor);
    } else if (isSelected == false && a.isInDatabase() == true) {
        label.setBackground(defaultColor);
    }
    label.setOpaque(true);
    return label;
}
Also used : Entity(model.Entity) Color(java.awt.Color) JLabel(javax.swing.JLabel)

Example 83 with Entity

use of com.ibm.watson.assistant.v1.model.Entity in project dna by leifeld.

the class StatementRecoder method updateContents.

/**
 * Update the content components when a new statement is loaded.
 *
 * @param statementIndex The index of the statement that is loaded.
 */
@SuppressWarnings("unchecked")
private void updateContents(int statementIndex) {
    if (statementIndex > -1) {
        // this can happen because fireTableDataChanged in the table model triggers a deselection of all rows
        // GUI elements in the upper part of the window, including coder combo box and controls
        idField.setText(Integer.toString(tableModel.getRow(currentIndex).getId()));
        indexField.setText((currentIndex + 1) + " / " + tableModel.getRowCount());
        coderComboBox.setSelectedIndex(comboBoxModel.getIndexByCoderId(tableModel.getRow(currentIndex).getCoderId()));
        coderComboBox.repaint();
        previousButton.setEnabled(currentIndex > 0);
        nextButton.setEnabled(currentIndex < tableModel.getRowCount() - 1);
        // content combo boxes
        // switch to true to color unused entities in red; but it takes much longer with large databases
        ArrayList<ArrayList<Entity>> entities = Dna.sql.getEntities(variableIds, false);
        for (int i = 0; i < statementType.getVariables().size(); i++) {
            String dataType = statementType.getVariables().get(i).getDataType();
            if (dataType.equals("short text")) {
                // load value
                Entity[] entitiesArray = new Entity[entities.get(indexMap.get(i)).size()];
                entitiesArray = entities.get(indexMap.get(i)).toArray(entitiesArray);
                ComboBoxModel<Entity> model = new DefaultComboBoxModel<Entity>(entitiesArray);
                ((JComboBox<Entity>) components.get(i)).setModel(model);
                Entity value = (Entity) tableModel.getRow(currentIndex).getValues().get(i).getValue();
                ((JComboBox<Entity>) components.get(i)).getModel().setSelectedItem(value);
                // toggle revert button
                Entity backupEntity = (Entity) tableModel.getBackupRow(currentIndex).getValues().get(i).getValue();
                if (value.getValue().equals(backupEntity.getValue())) {
                    revertButtons.get(i).setEnabled(false);
                } else {
                    revertButtons.get(i).setEnabled(true);
                }
            } else if (dataType.equals("long text")) {
                // load value
                String value = (String) tableModel.getRow(currentIndex).getValues().get(i).getValue();
                ((JTextArea) components.get(i)).setText(value);
                // toggle revert button
                String backupText = (String) tableModel.getBackupRow(currentIndex).getValues().get(i).getValue();
                if (value.equals(backupText)) {
                    revertButtons.get(i).setEnabled(false);
                } else {
                    revertButtons.get(i).setEnabled(true);
                }
            } else if (dataType.equals("boolean")) {
                // load value
                ((BooleanButtonPanel) components.get(i)).setYes((Integer) tableModel.getRow(currentIndex).getValues().get(i).getValue() != 0);
                // toggle revert button
                boolean b = ((int) tableModel.getBackupRow(currentIndex).getValues().get(i).getValue()) == 1;
                if (((BooleanButtonPanel) components.get(i)).isYes() == b) {
                    revertButtons.get(i).setEnabled(false);
                } else {
                    revertButtons.get(i).setEnabled(true);
                }
            } else if (dataType.equals("integer")) {
                // load value
                int value = (int) tableModel.getRow(currentIndex).getValues().get(i).getValue();
                ((JSpinner) components.get(i)).setValue(value);
                // toggle revert button
                int b = (int) tableModel.getBackupRow(currentIndex).getValues().get(i).getValue();
                if (value == b) {
                    revertButtons.get(i).setEnabled(false);
                } else {
                    revertButtons.get(i).setEnabled(true);
                }
            }
        }
    }
}
Also used : Entity(model.Entity) JComboBox(javax.swing.JComboBox) ArrayList(java.util.ArrayList) DefaultComboBoxModel(javax.swing.DefaultComboBoxModel)

Example 84 with Entity

use of com.ibm.watson.assistant.v1.model.Entity in project FAAAST-Service by FraunhoferIOSB.

the class TypeExtractor method extractTypeInfo.

public static TypeInfo extractTypeInfo(Object obj) {
    if (obj == null) {
        return null;
    }
    Class<?> type = obj.getClass();
    if (SubmodelElement.class.isAssignableFrom(type)) {
        ElementValueTypeInfo.Builder builder = ElementValueTypeInfo.builder();
        SubmodelElement submodelElement = (SubmodelElement) obj;
        builder.type(ElementValueMapper.getValueClass(submodelElement.getClass()));
        if (AnnotatedRelationshipElement.class.isAssignableFrom(type)) {
            AnnotatedRelationshipElement annotatedRelationshipElement = (AnnotatedRelationshipElement) obj;
            annotatedRelationshipElement.getAnnotations().forEach(x -> builder.element(x.getIdShort(), extractTypeInfo(x)));
        } else if (SubmodelElementCollection.class.isAssignableFrom(type)) {
            SubmodelElementCollection submodelElementCollection = (SubmodelElementCollection) obj;
            submodelElementCollection.getValues().forEach(x -> builder.element(x.getIdShort(), extractTypeInfo(x)));
        } else if (Entity.class.isAssignableFrom(type)) {
            Entity entity = (Entity) obj;
            entity.getStatements().forEach(x -> builder.element(x.getIdShort(), extractTypeInfo(x)));
        } else if (Property.class.isAssignableFrom(obj.getClass())) {
            Property property = (Property) obj;
            builder.datatype(Datatype.fromName(property.getValueType()));
        } else if (Range.class.isAssignableFrom(obj.getClass())) {
            Range range = (Range) obj;
            builder.datatype(Datatype.fromName(range.getValueType()));
        }
        return builder.build();
    }
    if (Submodel.class.isAssignableFrom(type)) {
        Submodel submodel = (Submodel) obj;
        ContainerTypeInfo.Builder<Object> builder = ContainerTypeInfo.<Object>builder();
        builder.type(Submodel.class);
        submodel.getSubmodelElements().forEach(x -> builder.element(x.getIdShort(), extractTypeInfo(x)));
        return builder.build();
    }
    if (Collection.class.isAssignableFrom(type)) {
        Collection collection = (Collection) obj;
        ContainerTypeInfo.Builder<Integer> builder = ContainerTypeInfo.<Integer>builder();
        builder.type(Collection.class);
        builder.contentType(TypeToken.of(type).resolveType(COLLECTION_GENERIC_TOKEN).getRawType());
        Iterator iterator = collection.iterator();
        int i = 0;
        while (iterator.hasNext()) {
            builder.element(i, extractTypeInfo(iterator.next()));
            i++;
        }
        return builder.build();
    }
    if (Map.class.isAssignableFrom(type)) {
        Map map = (Map) obj;
        ContainerTypeInfo.Builder<String> builder = ContainerTypeInfo.<String>builder();
        builder.type(Map.class);
        builder.contentType(TypeToken.of(type).resolveType(MAP_GENERIC_TOKEN).getRawType());
        map.forEach((key, value) -> builder.element(key.toString(), extractTypeInfo(value)));
        return builder.build();
    }
    if (type.isArray()) {
        Object[] array = (Object[]) obj;
        ContainerTypeInfo.Builder<Integer> builder = ContainerTypeInfo.<Integer>builder();
        builder.type(Array.class);
        builder.contentType(type.getComponentType());
        for (int i = 0; i < array.length; i++) {
            builder.element(i, extractTypeInfo(array[i]));
        }
        return builder.build();
    }
    return ContainerTypeInfo.<Object>builder().build();
}
Also used : SubmodelElement(io.adminshell.aas.v3.model.SubmodelElement) Array(java.lang.reflect.Array) Iterator(java.util.Iterator) AnnotatedRelationshipElement(io.adminshell.aas.v3.model.AnnotatedRelationshipElement) Collection(java.util.Collection) ElementValueMapper(de.fraunhofer.iosb.ilt.faaast.service.model.value.mapper.ElementValueMapper) Datatype(de.fraunhofer.iosb.ilt.faaast.service.model.value.primitive.Datatype) SubmodelElementCollection(io.adminshell.aas.v3.model.SubmodelElementCollection) TypeToken(com.google.common.reflect.TypeToken) Property(io.adminshell.aas.v3.model.Property) Type(java.lang.reflect.Type) Range(io.adminshell.aas.v3.model.Range) Map(java.util.Map) Entity(io.adminshell.aas.v3.model.Entity) Submodel(io.adminshell.aas.v3.model.Submodel) Submodel(io.adminshell.aas.v3.model.Submodel) Entity(io.adminshell.aas.v3.model.Entity) SubmodelElementCollection(io.adminshell.aas.v3.model.SubmodelElementCollection) AnnotatedRelationshipElement(io.adminshell.aas.v3.model.AnnotatedRelationshipElement) Range(io.adminshell.aas.v3.model.Range) SubmodelElement(io.adminshell.aas.v3.model.SubmodelElement) Iterator(java.util.Iterator) Collection(java.util.Collection) SubmodelElementCollection(io.adminshell.aas.v3.model.SubmodelElementCollection) Property(io.adminshell.aas.v3.model.Property) Map(java.util.Map)

Aggregations

MockResponse (okhttp3.mockwebserver.MockResponse)32 RecordedRequest (okhttp3.mockwebserver.RecordedRequest)32 Test (org.testng.annotations.Test)32 HashMap (java.util.HashMap)27 Test (org.junit.Test)24 CreateEntityOptions (com.ibm.watson.assistant.v1.model.CreateEntityOptions)19 NotFoundException (com.ibm.cloud.sdk.core.service.exception.NotFoundException)18 RequestBuilder (com.ibm.cloud.sdk.core.http.RequestBuilder)13 CreateValueOptions (com.ibm.watson.assistant.v1.model.CreateValueOptions)13 Entity (com.ibm.watson.assistant.v1.model.Entity)12 Value (com.ibm.watson.assistant.v1.model.Value)12 Synonym (com.ibm.watson.assistant.v1.model.Synonym)11 JsonObject (com.google.gson.JsonObject)10 CreateValue (com.ibm.watson.assistant.v1.model.CreateValue)10 Entity (model.Entity)10 CreateSynonymOptions (com.ibm.watson.assistant.v1.model.CreateSynonymOptions)7 DeleteEntityOptions (com.ibm.watson.assistant.v1.model.DeleteEntityOptions)7 DeleteSynonymOptions (com.ibm.watson.assistant.v1.model.DeleteSynonymOptions)7 DeleteValueOptions (com.ibm.watson.assistant.v1.model.DeleteValueOptions)7 Example (com.ibm.watson.assistant.v1.model.Example)7