⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 coverageseditoraction.java

📁 电子地图服务器,搭建自己的地图服务
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            config.setCrs(CRS.decode(config.getSrsName()));
        }

        config.setEnvelope(getEnvelope(form, config.getCrs()));
        config.setSupportedFormats(supportedFormats(form));
        config.setDefaultStyle(form.getStyleId());

        if (form.getOtherSelectedStyles() != null) {
            config.getStyles().clear();

            for (int i = 0; i < form.getOtherSelectedStyles().length; i++) {
                config.addStyle(form.getOtherSelectedStyles()[i]);
            }
        }

        config.setName(form.getName());
        config.setWmsPath(form.getWmsPath());

        final StringBuffer temp = new StringBuffer(config.getFormatId());
        temp.append("_").append(form.getName());
        config.setDirName(temp.toString());

        /**
         * Sync params
         */
        final Map params = new HashMap();
        Iterator it = form.getParamKeys().iterator();
        String paramKey;
        String paramValue;
        int index = 0;

        while (it.hasNext()) {
            paramKey = (String) it.next();
            paramValue = (String) form.getParamValues().get(index);
            params.put(paramKey, paramValue);
            index++;
        }

        config.setParameters(params);
    }

    /**
     * Execute Submit Action.
     *
     * @param mapping
     * @param form
     * @param user
     * @param request
     *
     * @return
     * @throws FactoryException
     */
    private ActionForward executeSubmit(ActionMapping mapping, CoveragesEditorForm form,
        UserContainer user, HttpServletRequest request)
        throws IOException {
        final CoverageConfig config = user.getCoverageConfig();

        try {
            sync(form, config, request);
        } catch (FactoryException e) {
            final IOException ex = new IOException(e.getLocalizedMessage());
            ex.initCause(e);
            throw ex;
        }

        final DataConfig dataConfig = (DataConfig) getDataConfig();
        final StringBuffer coverage = new StringBuffer(config.getFormatId());
        dataConfig.addCoverage(coverage.append(":").append(config.getName()).toString(), config);

        // Don't think reset is needed (as me have moved on to new page)
        // form.reset(mapping, request);
        getApplicationState().notifyConfigChanged();

        // Coverage no longer selected
        user.setCoverageConfig(null);

        return mapping.findForward("config.data.coverage");
    }

    /**
     *
     *
     * @param coverageForm
     * @param system
     *
     * @return Bounding box in lat long TODO is this correct
     */
    private GeneralEnvelope getEnvelope(CoveragesEditorForm coverageForm,
        CoordinateReferenceSystem crs) {
        final double[] coordinates = new double[4];
        final CoordinateSystem cs = crs.getCoordinateSystem();
        boolean lonFirst = true;

        if (AxisDirection.NORTH.equals(cs.getAxis(0).getDirection().absolute())) {
            lonFirst = false;
        }

        boolean swapXY = !lonFirst;

        // latitude index
        final int latIndex = lonFirst ? 1 : 0;

        final AxisDirection latitude = cs.getAxis(latIndex).getDirection();
        final AxisDirection longitude = cs.getAxis((latIndex + 1) % 2).getDirection();
        final boolean[] reverse = new boolean[] {
                lonFirst ? (!longitude.equals(AxisDirection.EAST))
                         : (!latitude.equals(AxisDirection.NORTH)),
                lonFirst ? (!latitude.equals(AxisDirection.NORTH))
                         : (!longitude.equals(AxisDirection.EAST))
            };

        coordinates[0] = ((!reverse[(latIndex + 1) % 2])
            ? ((!swapXY) ? Double.parseDouble(coverageForm.getMinX())
                         : Double.parseDouble(coverageForm.getMinY()))
            : ((!swapXY) ? Double.parseDouble(coverageForm.getMaxX())
                         : Double.parseDouble(coverageForm.getMaxY())));
        coordinates[1] = ((!reverse[latIndex])
            ? ((!swapXY) ? Double.parseDouble(coverageForm.getMinY())
                         : Double.parseDouble(coverageForm.getMinX()))
            : ((!swapXY) ? Double.parseDouble(coverageForm.getMaxY())
                         : Double.parseDouble(coverageForm.getMaxX())));
        coordinates[2] = ((!reverse[(latIndex + 1) % 2])
            ? ((!swapXY) ? Double.parseDouble(coverageForm.getMaxX())
                         : Double.parseDouble(coverageForm.getMaxY()))
            : ((!swapXY) ? Double.parseDouble(coverageForm.getMinX())
                         : Double.parseDouble(coverageForm.getMinY())));
        coordinates[3] = ((!reverse[latIndex])
            ? ((!swapXY) ? Double.parseDouble(coverageForm.getMaxY())
                         : Double.parseDouble(coverageForm.getMaxX()))
            : ((!swapXY) ? Double.parseDouble(coverageForm.getMinY())
                         : Double.parseDouble(coverageForm.getMinX())));

        GeneralEnvelope envelope = new GeneralEnvelope(new double[] { coordinates[0], coordinates[1] },
                new double[] { coordinates[2], coordinates[3] });

        envelope.setCoordinateReferenceSystem(crs);

        return envelope;
    }

    private ActionForward executeLookupSRS(ActionMapping mapping, CoveragesEditorForm coverageForm,
        UserContainer user, HttpServletRequest request)
        throws IOException, ServletException {
        final String formatID = coverageForm.getFormatId();
        final Data catalog = getData();
        CoverageStoreInfo cvStoreInfo = catalog.getFormatInfo(formatID);

        if (cvStoreInfo == null) {
            cvStoreInfo = new CoverageStoreInfo(getDataConfig().getDataFormat(formatID).toDTO(),
                    catalog);
        }

        final Format format = cvStoreInfo.getFormat();
        AbstractGridCoverage2DReader reader = (AbstractGridCoverage2DReader) cvStoreInfo.getReader();

        if (reader == null) {
            reader = (AbstractGridCoverage2DReader) ((AbstractGridFormat) format).getReader(GeoserverDataDirectory
                    .findDataFile(cvStoreInfo.getUrl()));
        }

        try {
            final CoordinateReferenceSystem sourceCRS = reader.getCrs();
            final GeneralEnvelope gEnvelope = reader.getOriginalEnvelope();
            final GeneralEnvelope targetEnvelope = gEnvelope;
            GeneralEnvelope envelope = targetEnvelope;
            String s = CRS.lookupIdentifier(sourceCRS, true);

            if (s == null) {
                coverageForm.setSrsName("UNKNOWN");
            } else if (s.toUpperCase().startsWith("EPSG:")) {
                coverageForm.setSrsName(s);
            } else {
                coverageForm.setSrsName("EPSG:" + s);
            }
        } catch (Exception e) {
            coverageForm.setSrsName("UNKNOWN");
        }

        return mapping.findForward("config.data.coverage.editor");
    }

    private MetaDataLink metadataLink(CoveragesEditorForm coverageForm) {
        MetaDataLink ml = new MetaDataLink();

        if ((coverageForm.getMetadataLink() != null)
                && (coverageForm.getMetadataLink().length() > 0)) {
            ml.setAbout(coverageForm.getMetadataLink());
            ml.setMetadataType("other");
        } else {
            ml = null;
        }

        return ml;
    }

    /**
     * DOCUMENT ME!
     *
     * @param coverageForm
     *
     * @return Set of keywords
     */
    private List keyWords(CoveragesEditorForm coverageForm) {
        LinkedList keywords = new LinkedList();
        String[] array = (coverageForm.getKeywords() != null)
            ? coverageForm.getKeywords().split(" ") : new String[0];
        final int length = array.length;

        for (int i = 0; i < length; i++) {
            keywords.add(array[i]);
        }

        return keywords;
    }

    private List interpolationMethods(CoveragesEditorForm coverageForm) {
        LinkedList interpolationMethods = new LinkedList();
        String[] array = (coverageForm.getInterpolationMethods() != null)
            ? coverageForm.getInterpolationMethods().split(",") : new String[0];
        final int length = array.length;

        for (int i = 0; i < length; i++) {
            interpolationMethods.add(array[i]);
        }

        return interpolationMethods;
    }

    private List requestCRSs(CoveragesEditorForm coverageForm) {
        LinkedList requestCRSs = new LinkedList();
        String[] array = (coverageForm.getRequestCRSs() != null)
            ? coverageForm.getRequestCRSs().split(",") : new String[0];
        final int length = array.length;

        for (int i = 0; i < length; i++) {
            requestCRSs.add(array[i]);
        }

        return requestCRSs;
    }

    private List responseCRSs(CoveragesEditorForm coverageForm) {
        LinkedList responseCRSs = new LinkedList();
        String[] array = (coverageForm.getResponseCRSs() != null)
            ? coverageForm.getResponseCRSs().split(",") : new String[0];
        final int length = array.length;

        for (int i = 0; i < length; i++) {
            responseCRSs.add(array[i]);
        }

        return responseCRSs;
    }

    private List supportedFormats(CoveragesEditorForm coverageForm) {
        LinkedList supportedFormats = new LinkedList();
        String[] array = (coverageForm.getSupportedFormats() != null)
            ? coverageForm.getSupportedFormats().split(",") : new String[0];
        final int length = array.length;

        for (int i = 0; i < length; i++) {
            supportedFormats.add(array[i]);
        }

        return supportedFormats;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -