registryupdateaction.java

来自「jetspeed源代码」· Java 代码 · 共 1,199 行 · 第 1/3 页

JAVA
1,199
字号
    /**
     * Add a media type to a registry entry
     * @param rundata The turbine rundata context for this request.
     * @param context The velocity context for this request.
     * @throws Exception
     */
    public void doAddmediatype(RunData rundata, Context context)
        throws Exception
    {
        try
        {
            String entryName =
                rundata.getParameters().getString(registryEntryName);
            PortletInfoEntry portletEntry =
                (PortletInfoEntry) Registry.getEntry(registry, entryName);
            if (portletEntry != null)
            {
                String mediaType =
                    rundata.getParameters().getString("media_type");
                if (mediaType != null && mediaType.length() > 0)
                {
                    portletEntry.addMediaType(mediaType);
                    Registry.addEntry(registry, portletEntry);
                    clearUserData(rundata);
                }
                else
                {
                    DynamicURI duri =
                        redirect(
                            rundata,
                            SecurityConstants.PARAM_MODE_UPDATE,
                            SecurityConstants.MID_MISSING_PARAMETER);
                    rundata.setRedirectURI(duri.toString());
                    resetForm(rundata);
                }
            }
            else
            {
                DynamicURI duri =
                    redirect(
                        rundata,
                        SecurityConstants.PARAM_MODE_UPDATE,
                        SecurityConstants.MID_INVALID_ENTITY_NAME);
                rundata.setRedirectURI(duri.toString());
                resetForm(rundata);

                logger.error(
                    this.getClass().getName()
                        + ": Failed to find registry entry while trying to add media type");
            }
        }
        catch (Exception e)
        {
            DynamicURI duri =
                redirect(
                    rundata,
                    SecurityConstants.PARAM_MODE_UPDATE,
                    SecurityConstants.MID_UPDATE_FAILED);
            rundata.setRedirectURI(duri.toString());
            resetForm(rundata);

            logger.error("Exception", e);
        }
    }

    /**
     * Remove media types from a registry entry
     * @param rundata The turbine rundata context for this request.
     * @param context The velocity context for this request.
     * @throws Exception
     */
    public void doRemovemediatypes(RunData rundata, Context context)
        throws Exception
    {
        try
        {
            String entryName =
                rundata.getParameters().getString(registryEntryName);
            PortletInfoEntry portletEntry =
                (PortletInfoEntry) Registry.getEntry(registry, entryName);
            if (portletEntry != null)
            {
                String[] mediaTypes =
                    rundata.getParameters().getStrings("media_type");
                if (mediaTypes != null && mediaTypes.length > 0)
                {
                    for (int i = 0; i < mediaTypes.length; i++)
                    {
                        String mediaType = mediaTypes[i];
                        portletEntry.removeMediaType(mediaType);
                    }

                    Registry.addEntry(registry, portletEntry);
                    clearUserData(rundata);
                }
                else
                {
                    DynamicURI duri =
                        redirect(
                            rundata,
                            SecurityConstants.PARAM_MODE_UPDATE,
                            SecurityConstants.MID_MISSING_PARAMETER);
                    rundata.setRedirectURI(duri.toString());
                    resetForm(rundata);
                }

            }
            else
            {
                DynamicURI duri =
                    redirect(
                        rundata,
                        SecurityConstants.PARAM_MODE_UPDATE,
                        SecurityConstants.MID_INVALID_ENTITY_NAME);
                rundata.setRedirectURI(duri.toString());
                resetForm(rundata);

                logger.error(
                    this.getClass().getName()
                        + ": Failed to find registry entry while trying to remove media types");
            }
        }
        catch (Exception e)
        {
            DynamicURI duri =
                redirect(
                    rundata,
                    SecurityConstants.PARAM_MODE_UPDATE,
                    SecurityConstants.MID_UPDATE_FAILED);
            rundata.setRedirectURI(duri.toString());
            resetForm(rundata);

            logger.error("Exception", e);
        }
    }

    /**
     * Add capabilities to a registry entry
     * @param rundata The turbine rundata context for this request.
     * @param context The velocity context for this request.
     * @throws Exception
     */
    public void doAddcapability(RunData rundata, Context context)
        throws Exception
    {
        try
        {
            String entryName =
                rundata.getParameters().getString(registryEntryName);
            RegistryEntry regEntry = Registry.getEntry(registry, entryName);

            if (regEntry != null)
            {
                CapabilityMap cm = null;
                if (regEntry instanceof MediaTypeEntry)
                {
                    MediaTypeEntry mediaTypeEntry = (MediaTypeEntry) regEntry;
                    cm = mediaTypeEntry.getCapabilityMap();
                }
                else if (regEntry instanceof ClientEntry)
                {
                    ClientEntry clientEntry = (ClientEntry) regEntry;
                    cm = clientEntry.getCapabilityMap();
                }
                else
                {
                    //TODO: throw error
                }

                if (cm != null)
                {
                    String[] capabilities =
                        rundata.getParameters().getStrings("capability");
                    if (capabilities != null && capabilities.length > 0)
                    {
                        for (int i = 0; i < capabilities.length; i++)
                        {
                            String capability = capabilities[i];
                            if (cm.contains(capability))
                            {
                            }
                            else
                            {
                                if (capability != null
                                    && capability.length() > 0)
                                {
                                    cm.addCapability(capability);
                                }
                            }
                        }
                    }

                    Registry.addEntry(registry, regEntry);
                    clearUserData(rundata);
                }
                else
                {
                    DynamicURI duri =
                        redirect(
                            rundata,
                            SecurityConstants.PARAM_MODE_UPDATE,
                            SecurityConstants.MID_UPDATE_FAILED);
                    rundata.setRedirectURI(duri.toString());
                    resetForm(rundata);
                }
            }
            else
            {
                DynamicURI duri =
                    redirect(
                        rundata,
                        SecurityConstants.PARAM_MODE_UPDATE,
                        SecurityConstants.MID_INVALID_ENTITY_NAME);
                rundata.setRedirectURI(duri.toString());
                resetForm(rundata);

                logger.error(
                    this.getClass().getName()
                        + ": Failed to find registry entry while trying to add capabilities");
            }
        }
        catch (Exception e)
        {
            DynamicURI duri =
                redirect(
                    rundata,
                    SecurityConstants.PARAM_MODE_UPDATE,
                    SecurityConstants.MID_UPDATE_FAILED);
            rundata.setRedirectURI(duri.toString());
            resetForm(rundata);

            logger.error("Exception", e);
        }
    }

    /**
     * Remove capabilites from a registry entry
     * @param rundata The turbine rundata context for this request.
     * @param context The velocity context for this request.
     * @throws Exception
     */
    public void doRemovecapability(RunData rundata, Context context)
        throws Exception
    {
        try
        {
            String entryName =
                rundata.getParameters().getString(registryEntryName);
            RegistryEntry regEntry = Registry.getEntry(registry, entryName);
            if (regEntry != null)
            {
                CapabilityMap cm = null;
                if (regEntry instanceof MediaTypeEntry)
                {
                    MediaTypeEntry mediaTypeEntry = (MediaTypeEntry) regEntry;
                    cm = mediaTypeEntry.getCapabilityMap();
                }
                else if (regEntry instanceof ClientEntry)
                {
                    ClientEntry clientEntry = (ClientEntry) regEntry;
                    cm = clientEntry.getCapabilityMap();
                }
                else
                {
                    //TODO: throw error
                }

                if (cm != null)
                {
                    String[] capabilities =
                        rundata.getParameters().getStrings("capability");
                    if (capabilities != null && capabilities.length > 0)
                    {
                        for (int i = 0; i < capabilities.length; i++)
                        {
                            String capability = capabilities[i];

                            cm.removeCapability(capability);
                        }

                        Registry.addEntry(registry, regEntry);
                        clearUserData(rundata);
                    }

                    Registry.addEntry(registry, regEntry);
                    clearUserData(rundata);
                }
                else
                {
                    DynamicURI duri =
                        redirect(
                            rundata,
                            SecurityConstants.PARAM_MODE_UPDATE,
                            SecurityConstants.MID_UPDATE_FAILED);
                    rundata.setRedirectURI(duri.toString());
                    resetForm(rundata);
                }
            }
            else
            {
                DynamicURI duri =
                    redirect(
                        rundata,
                        SecurityConstants.PARAM_MODE_UPDATE,
                        SecurityConstants.MID_INVALID_ENTITY_NAME);
                rundata.setRedirectURI(duri.toString());
                resetForm(rundata);

                logger.error(
                    this.getClass().getName()
                        + ": Failed to find registry entry while trying to remove capabilities");
            }
        }
        catch (Exception e)
        {
            DynamicURI duri =
                redirect(
                    rundata,
                    SecurityConstants.PARAM_MODE_UPDATE,
                    SecurityConstants.MID_UPDATE_FAILED);
            rundata.setRedirectURI(duri.toString());
            resetForm(rundata);

            logger.error("Exception", e);
        }
    }

    /**
     * Method that sets up a redirect link given the rundata, the mode, and a reason
     * @param rundata
     * @param mode
     * @param reason
     * @return
     * @throws TurbineException
     */
    protected DynamicURI redirect(RunData rundata, String mode, int reason)
        throws TurbineException
    {
        JetspeedLink link = JetspeedLinkFactory.getInstance(rundata);
        DynamicURI duri =
            link
                .getPaneByName(pane)
                .addPathInfo(SecurityConstants.PARAM_MODE, mode)
                .addPathInfo(SecurityConstants.PARAM_MSGID, reason);

        String entryName = rundata.getParameters().getString(registryEntryName);
        if (entryName != null && entryName.length() > 0)
        {
            duri.addQueryData(registryEntryName, entryName);
        }

        JetspeedLinkFactory.putInstance(link);

        return duri;
    }

    /**
     * Remove any data that was added to the user's temporary storage
     * @param rundata
     */
    protected void clearUserData(RunData rundata)
    {
        rundata.getUser().removeTemp(registryEntryName);
        rundata.getUser().removeTemp("title");
        rundata.getUser().removeTemp("description");
    }

    /**
     * Method to reset data entered into the forms
     * @param rundata
     */
    protected void resetForm(RunData rundata)
    {
        String entryName = rundata.getParameters().getString(registryEntryName);
        String title = rundata.getParameters().getString("title");
        String description = rundata.getParameters().getString("description");

        rundata.getUser().setTemp(registryEntryName, entryName);
        rundata.getUser().setTemp("title", title);
        rundata.getUser().setTemp("description", description);
    }

    /**
     * Turns an iterator into a collection
     * 
     * @param iter An iterator
     * @return the collection
     */
    protected Collection iteratorToCollection(Iterator iter)
    {
        Collection collection = new ArrayList();
        while (iter.hasNext())
        {
            collection.add(iter.next());
        }
        return collection;
    }
}

⌨️ 快捷键说明

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