Search in sources :

Example 11 with PopulateDetailsInterface

use of com.sldeditor.ui.iface.PopulateDetailsInterface in project sldeditor by robward-scisys.

the class VendorOptionFillFactory method getFieldDataManager.

/**
 * Gets the field data manager.
 *
 * @param fieldConfigManager the field config manager
 */
public void getFieldDataManager(GraphicPanelFieldManager fieldConfigManager) {
    for (VendorOptionInterface vendorOption : vendorOptionList) {
        if (vendorOption != null) {
            PopulateDetailsInterface populateInterface = (PopulateDetailsInterface) vendorOption;
            fieldConfigManager.add(populateInterface.getFieldDataManager());
        }
    }
}
Also used : VendorOptionInterface(com.sldeditor.ui.detail.vendor.geoserver.VendorOptionInterface) PopulateDetailsInterface(com.sldeditor.ui.iface.PopulateDetailsInterface)

Example 12 with PopulateDetailsInterface

use of com.sldeditor.ui.iface.PopulateDetailsInterface in project sldeditor by robward-scisys.

the class SymbolizerDetailsPanel method getPanel.

/**
 * Gets the panel.
 *
 * @param parentClass the parent class
 * @param key the key
 * @return the panel
 */
@Override
public PopulateDetailsInterface getPanel(Class<?> parentClass, String key) {
    List<PopulateDetailsInterface> panelList = panelMap.get(key);
    if (panelList == null) {
        key = EMPTY_PANEL_KEY;
        panelList = panelMap.get(key);
    }
    if (panelList.size() == 1) {
        return panelList.get(0);
    }
    if (parentClass != null) {
        Class<?> panelTypeToFind = fillMap.get(parentClass);
        for (PopulateDetailsInterface panel : panelList) {
            if (panel.getClass() == panelTypeToFind) {
                return panel;
            }
        }
    }
    return null;
}
Also used : PopulateDetailsInterface(com.sldeditor.ui.iface.PopulateDetailsInterface)

Example 13 with PopulateDetailsInterface

use of com.sldeditor.ui.iface.PopulateDetailsInterface in project sldeditor by robward-scisys.

the class SymbolizerDetailsPanel method internalGetMinimumVersion.

/**
 * Internal get minimum version.
 *
 * @param sldObj the sld obj
 * @param vendorOptionsPresentList the vendor options present list
 * @param parentClass the parent class
 * @param classSelected the class selected
 */
private void internalGetMinimumVersion(Object parentObj, Object sldObj, List<VendorOptionPresent> vendorOptionsPresentList, Class<?> parentClass, Class<?> classSelected) {
    String key = null;
    if (classSelected != null) {
        key = classSelected.toString();
    } else {
        key = EMPTY_PANEL_KEY;
    }
    PopulateDetailsInterface panel = getPanel(parentClass, key);
    if (panel != null) {
        panel.getMinimumVersion(parentObj, sldObj, vendorOptionsPresentList);
    }
}
Also used : PopulateDetailsInterface(com.sldeditor.ui.iface.PopulateDetailsInterface)

Example 14 with PopulateDetailsInterface

use of com.sldeditor.ui.iface.PopulateDetailsInterface in project sldeditor by robward-scisys.

the class VendorOptionRasterFactory method updateFieldDataManager.

/**
 * Updates the field data manager.
 *
 * @param fieldConfigManager the field config manager
 */
public void updateFieldDataManager(GraphicPanelFieldManager fieldConfigManager) {
    for (VendorOptionInterface vendorOption : vendorOptionList) {
        if (vendorOption != null) {
            PopulateDetailsInterface populateInterface = (PopulateDetailsInterface) vendorOption;
            fieldConfigManager.add(populateInterface.getFieldDataManager());
        }
    }
}
Also used : VendorOptionInterface(com.sldeditor.ui.detail.vendor.geoserver.VendorOptionInterface) PopulateDetailsInterface(com.sldeditor.ui.iface.PopulateDetailsInterface)

Example 15 with PopulateDetailsInterface

use of com.sldeditor.ui.iface.PopulateDetailsInterface in project sldeditor by robward-scisys.

the class SLDTestRunner method runTest.

/**
 * Run the test.
 *
 * @param folder the folder
 * @param testConfig the test config
 */
public void runTest(String folder, String testConfig) {
    // read JSON file data as String
    String fullPath = "/" + folder + "/test/" + testConfig;
    SldEditorTest testSuite = (SldEditorTest) ParseXML.parseFile("", fullPath, SCHEMA_RESOURCE, SldEditorTest.class);
    assertNotNull(testSuite, "Failed to read test config file : " + fullPath);
    String testsldfile = testSuite.getTestsldfile();
    if (!testsldfile.startsWith("/")) {
        testsldfile = "/" + testsldfile;
    }
    System.out.println("Opening : " + testsldfile);
    List<XMLVendorOption> xmlVendorOptionList = testSuite.getVendorOption();
    List<VersionData> versionDataList = new ArrayList<VersionData>();
    if ((xmlVendorOptionList != null) && !xmlVendorOptionList.isEmpty()) {
        for (XMLVendorOption vo : xmlVendorOptionList) {
            VersionData versionData = ReadPanelConfig.decodeVersionData(vo);
            versionDataList.add(versionData);
        }
    }
    // If in doubt revert to strict SLD
    if (versionDataList.isEmpty()) {
        versionDataList.add(VendorOptionManager.getInstance().getDefaultVendorOptionVersionData());
    }
    sldEditor.setVendorOptions(versionDataList);
    InputStream inputStream = SLDTestRunner.class.getResourceAsStream(testsldfile);
    if (inputStream == null) {
        assertNotNull(inputStream, "Failed to find sld test file : " + testsldfile);
    } else {
        File f = null;
        try {
            f = stream2file(inputStream);
            int noOfRetries = 3;
            int attempt = 0;
            while (attempt < noOfRetries) {
                try {
                    sldEditor.openFile(f.toURI().toURL());
                    break;
                } catch (NullPointerException nullException) {
                    nullException.printStackTrace();
                    StackTraceElement[] stackTraceElements = nullException.getStackTrace();
                    System.out.println(stackTraceElements[0].getMethodName());
                    System.out.println("Attempt : " + attempt + 1);
                    attempt++;
                }
            }
            f.delete();
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        GraphicPanelFieldManager mgr = sldEditor.getFieldDataManager();
        for (XMLPanelTest test : testSuite.getPanelTests()) {
            XMLSetup selectedItem = test.getSetup();
            TreeSelectionData selectionData = new TreeSelectionData();
            selectionData.setLayerIndex(getXMLValue(selectedItem.getLayer()));
            selectionData.setStyleIndex(getXMLValue(selectedItem.getStyle()));
            selectionData.setFeatureTypeStyleIndex(getXMLValue(selectedItem.getFeatureTypeStyle()));
            selectionData.setRuleIndex(getXMLValue(selectedItem.getRule()));
            selectionData.setSymbolizerIndex(getXMLValue(selectedItem.getSymbolizer()));
            selectionData.setSymbolizerDetailIndex(getXMLValue(selectedItem.getSymbolizerDetail()));
            try {
                selectionData.setSelectedPanel(Class.forName(selectedItem.getExpectedPanel()));
            } catch (ClassNotFoundException e1) {
                fail("Unknown class : " + selectedItem.getExpectedPanel());
            }
            boolean result = sldEditor.selectTreeItem(selectionData);
            assertTrue(result, "Failed to select tree item");
            PopulateDetailsInterface panel = sldEditor.getSymbolPanel();
            String panelClassName = panel.getClass().getName();
            assertEquals(selectedItem.getExpectedPanel(), panelClassName);
            assertEquals(panel.isDataPresent(), selectedItem.getEnabled(), "Check panel data present");
            Class<?> panelId = null;
            try {
                panelId = Class.forName(selectedItem.getExpectedPanel());
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            if (test.getFieldTests() != null) {
                for (XMLFieldTest testItem : test.getFieldTests()) {
                    if (testItem != null) {
                        if (testItem.getDisabledOrLiteralStringOrLiteralInt() != null) {
                            for (Object xmlTestValueObj : testItem.getDisabledOrLiteralStringOrLiteralInt()) {
                                if (xmlTestValueObj instanceof XMLSetMultiOptionGroup) {
                                    XMLSetMultiOptionGroup testValue = (XMLSetMultiOptionGroup) xmlTestValueObj;
                                    GroupIdEnum groupId = testValue.getMultiOptionGroupId();
                                    String outputText = "Checking multioption group : " + groupId;
                                    System.out.println(outputText);
                                    assertNotNull(groupId, outputText);
                                    MultiOptionGroup multiOptionGroup = mgr.getMultiOptionGroup(panelId, groupId);
                                    assertNotNull(multiOptionGroup, panelId.getName() + "/" + groupId + " multi option group should exist");
                                    multiOptionGroup.setOption(testValue.getOption());
                                    OptionGroup optionGroupSelected = multiOptionGroup.getSelectedOptionGroup();
                                    assertTrue(optionGroupSelected.getId() == testValue.getOption(), groupId + " should be set");
                                } else if (xmlTestValueObj instanceof XMLSetGroup) {
                                    XMLSetGroup testValue = (XMLSetGroup) xmlTestValueObj;
                                    GroupIdEnum groupId = testValue.getGroupId();
                                    String outputText = "Checking group : " + groupId;
                                    System.out.println(outputText);
                                    assertNotNull(groupId, outputText);
                                    GroupConfigInterface groupConfig = mgr.getGroup(panelId, groupId);
                                    assertNotNull(groupConfig, panelId.getName() + "/" + groupId + " group should exist");
                                    groupConfig.enable(testValue.getEnable());
                                    assertTrue(groupConfig.isPanelEnabled() == testValue.getEnable(), groupId + " should be set");
                                } else {
                                    XMLFieldBase testValue = (XMLFieldBase) xmlTestValueObj;
                                    FieldIdEnum fieldId = testValue.getField();
                                    String outputText = "Checking : " + fieldId;
                                    System.out.println(outputText);
                                    assertNotNull(fieldId, outputText);
                                    try {
                                        Thread.sleep(100);
                                    } catch (InterruptedException e) {
                                        e.printStackTrace();
                                    }
                                    FieldConfigBase fieldConfig = mgr.getData(panelId, fieldId);
                                    assertNotNull(fieldConfig, String.format("Failed to field panel %s field %s", selectedItem.getExpectedPanel(), fieldId));
                                    if (testValue instanceof XMLSetFieldLiteralBase) {
                                        XMLSetFieldLiteralInterface testInterface = (XMLSetFieldLiteralInterface) testValue;
                                        testInterface.accept(fieldConfig, fieldId);
                                        if (!((XMLSetFieldLiteralBase) testValue).getIgnoreCheck()) {
                                            String sldContentString = sldEditor.getSLDString();
                                            boolean actualResult = testOutput.testValue(sldContentString, selectionData, testValue.getField(), testValue);
                                            assertTrue(actualResult, fieldId + " should be set");
                                        }
                                    } else if (testValue instanceof XMLSetFieldAttribute) {
                                        XMLSetFieldLiteralInterface testInterface = (XMLSetFieldLiteralInterface) testValue;
                                        testInterface.accept(fieldConfig, fieldId);
                                        String sldContentString = sldEditor.getSLDString();
                                        boolean actualResult = testOutput.testAttribute(sldContentString, selectionData, testValue.getField(), (XMLSetFieldAttribute) testValue);
                                        assertTrue(actualResult, fieldId + " should be set");
                                    } else if (testValue instanceof XMLFieldDisabled) {
                                        assertFalse(fieldConfig.isEnabled(), fieldId + " should be disabled");
                                    } else {
                                        assertTrue(fieldConfig.isEnabled(), fieldId + " should be enabled");
                                        Expression expression = null;
                                        if (fieldConfig.isValueOnly()) {
                                            String expectedValue = "";
                                            if (testValue instanceof XMLFieldLiteralBase) {
                                                Object literalValue = getLiteralValue((XMLFieldLiteralBase) testValue);
                                                expectedValue = String.valueOf(literalValue);
                                                if (fieldId == FieldIdEnum.TTF_SYMBOL) {
                                                    expectedValue = processTTFField(expectedValue).toString();
                                                }
                                            } else if (testValue instanceof XMLFieldAttribute) {
                                                expectedValue = ((XMLFieldAttribute) testValue).getAttribute();
                                            // CHECKSTYLE:OFF
                                            } else if (testValue instanceof XMLFieldExpression) {
                                                expectedValue = ((XMLFieldExpression) testValue).getExpression();
                                            } else if (testValue instanceof XMLColourMapEntries) {
                                                expectedValue = EncodeColourMap.encode(((XMLColourMapEntries) testValue).getEntry());
                                            // CHECKSTYLE:ON
                                            } else {
                                                fail(fieldId + " has unsupported type " + testValue.getClass().getName());
                                            }
                                            String actualValue = fieldConfig.getStringValue();
                                            String msg = String.format("%s Expected : '%s' Actual : '%s'", outputText, expectedValue, actualValue);
                                            boolean condition;
                                            if (comparingFilename(fieldId)) {
                                                File actualFile = new File(actualValue);
                                                File expectedFile = new File(expectedValue);
                                                String actualFileString = actualFile.getAbsolutePath();
                                                String expectedFileString = expectedFile.getAbsolutePath();
                                                expectedFileString = expectedFileString.substring(expectedFileString.length() - expectedValue.length());
                                                condition = actualFileString.endsWith(expectedFileString);
                                            } else {
                                                condition = (expectedValue.compareTo(actualValue) == 0);
                                            }
                                            assertTrue(condition, msg);
                                        } else {
                                            if (colourFieldsList.contains(fieldId)) {
                                                FieldConfigColour fieldColour = (FieldConfigColour) fieldConfig;
                                                expression = fieldColour.getColourExpression();
                                            } else {
                                                expression = fieldConfig.getExpression();
                                                if (fieldId == FieldIdEnum.SYMBOL_TYPE) {
                                                    String string = expression.toString();
                                                    expression = ff.literal(string.replace(File.separatorChar, '/'));
                                                } else if (fieldId == FieldIdEnum.FONT_FAMILY) {
                                                    // Handle the case where a font is not
                                                    // available on all operating systems
                                                    String string = expression.toString();
                                                    if (string.compareToIgnoreCase(DEFAULT_FONT) != 0) {
                                                        expression = ff.literal(getFontForOS());
                                                        // CHECKSTYLE:OFF
                                                        System.out.println("Updated font family to test for : " + expression.toString());
                                                    // CHECKSTYLE:ON
                                                    }
                                                } else if (fieldId == FieldIdEnum.TTF_SYMBOL) {
                                                    expression = processTTFField(expression.toString());
                                                }
                                            }
                                            if (expression != null) {
                                                if (testValue instanceof XMLFieldLiteralBase) {
                                                    Object literalValue = getLiteralValue((XMLFieldLiteralBase) testValue);
                                                    if (literalValue.getClass() == Double.class) {
                                                        checkLiteralValue(outputText, expression, (Double) literalValue);
                                                    } else if (literalValue.getClass() == Integer.class) {
                                                        checkLiteralValue(outputText, expression, (Integer) literalValue);
                                                    } else if (literalValue.getClass() == String.class) {
                                                        // CHECKSTYLE:OFF
                                                        if (fieldId == FieldIdEnum.FONT_FAMILY) {
                                                            // Handle the case where a font is
                                                            // not
                                                            // available on all operating
                                                            // systems
                                                            // CHECKSTYLE:ON
                                                            checkLiteralValue(outputText, expression, getFontForOS());
                                                        } else {
                                                            checkLiteralValue(outputText, expression, (String) literalValue);
                                                        }
                                                    }
                                                }
                                            } else {
                                                String actualValue;
                                                String expectedValue = fieldConfig.getStringValue();
                                                Object literalValue = getLiteralValue((XMLFieldLiteralBase) testValue);
                                                if (literalValue.getClass() == Double.class) {
                                                    actualValue = String.valueOf((Double) literalValue);
                                                } else if (literalValue.getClass() == Integer.class) {
                                                    actualValue = String.valueOf((Integer) literalValue);
                                                } else if (literalValue.getClass() == String.class) {
                                                    actualValue = (String) literalValue;
                                                } else {
                                                    actualValue = "";
                                                }
                                                String msg = String.format("%s Expected : '%s' Actual : '%s'", outputText, expectedValue, actualValue);
                                                boolean condition = (expectedValue.compareTo(actualValue) == 0);
                                                assertTrue(condition, msg);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    JFrame frame = Controller.getInstance().getFrame();
    frame.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING));
}
Also used : XMLPanelTest(com.sldeditor.common.xml.ui.XMLPanelTest) XMLFieldDisabled(com.sldeditor.common.xml.ui.XMLFieldDisabled) XMLSetFieldLiteralBase(com.sldeditor.common.xml.ui.XMLSetFieldLiteralBase) SldEditorTest(com.sldeditor.common.xml.ui.SldEditorTest) ArrayList(java.util.ArrayList) XMLFieldLiteralString(com.sldeditor.common.xml.ui.XMLFieldLiteralString) XMLSetFieldLiteralInterface(com.sldeditor.common.xml.ui.XMLSetFieldLiteralInterface) GraphicPanelFieldManager(com.sldeditor.ui.detail.GraphicPanelFieldManager) PopulateDetailsInterface(com.sldeditor.ui.iface.PopulateDetailsInterface) XMLFieldBase(com.sldeditor.common.xml.ui.XMLFieldBase) OptionGroup(com.sldeditor.ui.detail.config.base.OptionGroup) MultiOptionGroup(com.sldeditor.ui.detail.config.base.MultiOptionGroup) XMLSetMultiOptionGroup(com.sldeditor.common.xml.ui.XMLSetMultiOptionGroup) JFrame(javax.swing.JFrame) XMLSetFieldAttribute(com.sldeditor.common.xml.ui.XMLSetFieldAttribute) FieldConfigColour(com.sldeditor.ui.detail.config.FieldConfigColour) GroupConfigInterface(com.sldeditor.ui.detail.config.base.GroupConfigInterface) MultiOptionGroup(com.sldeditor.ui.detail.config.base.MultiOptionGroup) XMLSetMultiOptionGroup(com.sldeditor.common.xml.ui.XMLSetMultiOptionGroup) XMLSetup(com.sldeditor.common.xml.ui.XMLSetup) GroupIdEnum(com.sldeditor.common.xml.ui.GroupIdEnum) XMLFieldAttribute(com.sldeditor.common.xml.ui.XMLFieldAttribute) FieldConfigBase(com.sldeditor.ui.detail.config.FieldConfigBase) XMLVendorOption(com.sldeditor.common.xml.ui.XMLVendorOption) InputStream(java.io.InputStream) XMLColourMapEntries(com.sldeditor.common.xml.ui.XMLColourMapEntries) IOException(java.io.IOException) XMLSetMultiOptionGroup(com.sldeditor.common.xml.ui.XMLSetMultiOptionGroup) XMLFieldLiteralDouble(com.sldeditor.common.xml.ui.XMLFieldLiteralDouble) XMLFieldExpression(com.sldeditor.common.xml.ui.XMLFieldExpression) Expression(org.opengis.filter.expression.Expression) XMLFieldExpression(com.sldeditor.common.xml.ui.XMLFieldExpression) XMLFieldLiteralBase(com.sldeditor.common.xml.ui.XMLFieldLiteralBase) VersionData(com.sldeditor.common.vendoroption.VersionData) XMLFieldTest(com.sldeditor.common.xml.ui.XMLFieldTest) TreeSelectionData(com.sldeditor.TreeSelectionData) WindowEvent(java.awt.event.WindowEvent) XMLSetGroup(com.sldeditor.common.xml.ui.XMLSetGroup) FieldIdEnum(com.sldeditor.common.xml.ui.FieldIdEnum) File(java.io.File)

Aggregations

PopulateDetailsInterface (com.sldeditor.ui.iface.PopulateDetailsInterface)15 VendorOptionInterface (com.sldeditor.ui.detail.vendor.geoserver.VendorOptionInterface)4 SLDTree (com.sldeditor.ui.tree.SLDTree)3 File (java.io.File)3 IOException (java.io.IOException)3 InputStream (java.io.InputStream)3 TreeSelectionData (com.sldeditor.TreeSelectionData)2 SLDData (com.sldeditor.common.data.SLDData)2 SelectedSymbol (com.sldeditor.common.data.SelectedSymbol)2 RenderSymbolInterface (com.sldeditor.datasource.RenderSymbolInterface)2 StyledLayerDescriptor (org.geotools.styling.StyledLayerDescriptor)2 Test (org.junit.jupiter.api.Test)2 VersionData (com.sldeditor.common.vendoroption.VersionData)1 FieldIdEnum (com.sldeditor.common.xml.ui.FieldIdEnum)1 GroupIdEnum (com.sldeditor.common.xml.ui.GroupIdEnum)1 SldEditorTest (com.sldeditor.common.xml.ui.SldEditorTest)1 XMLColourMapEntries (com.sldeditor.common.xml.ui.XMLColourMapEntries)1 XMLFieldAttribute (com.sldeditor.common.xml.ui.XMLFieldAttribute)1 XMLFieldBase (com.sldeditor.common.xml.ui.XMLFieldBase)1 XMLFieldDisabled (com.sldeditor.common.xml.ui.XMLFieldDisabled)1