psmlupdateaction.java
来自「jetspeed源代码」· Java 代码 · 共 1,411 行 · 第 1/4 页
JAVA
1,411 行
context.put(CATEGORY_VALUE, rundata.getUser().getTemp(CATEGORY_VALUE));
context.put(COPY_FROM, rundata.getUser().getTemp(COPY_FROM));
}
}
if(mode != null && mode.equals("import_all"))
{
if (msgid == null)
{
// get the PSML Root Directory
ResourceService serviceConf = ((TurbineServices)TurbineServices.getInstance())
.getResources(PsmlManagerService.SERVICE_NAME);
String root = serviceConf.getString("root", "/WEB-INF/psml");
context.put(COPY_FROM, TurbineServlet.getRealPath(root));
}
else
{
context.put(COPY_FROM, rundata.getUser().getTemp(COPY_FROM));
}
}
}
catch (Exception e)
{
logger.error("Exception", e);
rundata.setMessage("Error in PsmlUpdateAction: " + e.toString());
rundata.setStackTrace(StringUtils.stackTrace(e), e);
rundata.setScreenTemplate(JetspeedResources.getString("template.error","Error"));
}
}
/**
* Database Insert Action for Psml.
*
* @param rundata The turbine rundata context for this request.
* @param context The velocity context for this request.
*/
public void doInsert(RunData rundata, Context context)
throws Exception
{
Profile profile = null;
ProfileLocator locator = null;
String categoryName = null;
String categoryValue = null;
String copyFrom = null;
String name = null;
try
{
categoryName = rundata.getParameters().getString("CategoryName");
categoryValue = rundata.getParameters().getString("CategoryValue");
copyFrom = rundata.getParameters().getString("CopyFrom");
name = rundata.getParameters().getString("name");
//
//create a new locator and set its values according to users input
//
locator = Profiler.createLocator();
if (categoryName.equalsIgnoreCase(Profiler.PARAM_GROUP))
{
locator.setGroupByName(categoryValue);
}
else if (categoryName.equalsIgnoreCase(Profiler.PARAM_ROLE))
{
locator.setRoleByName(categoryValue);
}
else if (categoryName.equalsIgnoreCase(Profiler.PARAM_USER))
{
locator.setUser(JetspeedSecurity.getUser(categoryValue));
}
else
{
locator.setAnonymous(true);
}
String tempVar = rundata.getParameters().getString("psml_mediatype");
if (tempVar != null && tempVar.trim().length() > 0)
{
locator.setMediaType(tempVar);
}
tempVar = rundata.getParameters().getString("psml_language");
if (tempVar != null && tempVar.trim().length() > 0)
{
locator.setLanguage(tempVar);
}
tempVar = rundata.getParameters().getString("psml_country");
if (tempVar != null && tempVar.trim().length() > 0)
{
locator.setCountry(tempVar);
}
locator.setName(name);
//check if profile to be created already exists
if (PsmlManager.getDocument(locator) != null )
throw new EntityExistsException("Profile:"+locator.getPath()+" Already Exists!");
//
// validate that its not an 'blank' profile -- not allowed
//
if (name == null || name.trim().length() == 0)
{
JetspeedLink link = JetspeedLinkFactory.getInstance(rundata);
DynamicURI duri = link.getPaneByName(PSML_UPDATE_PANE)
.addPathInfo(SecurityConstants.PARAM_MODE,
SecurityConstants.PARAM_MODE_INSERT)
.addPathInfo(SecurityConstants.PARAM_MSGID,
SecurityConstants.MID_INVALID_ENTITY_NAME);
JetspeedLinkFactory.putInstance(link);
rundata.setRedirectURI(duri.toString());
//save user entered values
if (locator != null)
rundata.getUser().setTemp(TEMP_LOCATOR, locator);
if (categoryName != null)
rundata.getUser().setTemp(CATEGORY_NAME, categoryName);
if (categoryValue != null)
rundata.getUser().setTemp(CATEGORY_VALUE, categoryValue);
if (copyFrom != null)
rundata.getUser().setTemp(COPY_FROM, copyFrom);
return;
}
//
// retrieve the profile to clone
//
ProfileLocator baseLocator = Profiler.createLocator();
baseLocator.createFromPath(copyFrom);
Profile baseProfile = Profiler.getProfile(baseLocator);
//
// create a new profile
//
if(baseProfile != null)
{
PSMLDocument doc = baseProfile.getDocument();
if(doc != null)
{
Portlets portlets = doc.getPortlets();
Portlets clonedPortlets = (Portlets) SerializationUtils.clone(portlets);
org.apache.jetspeed.util.PortletUtils.regenerateIds(clonedPortlets);
profile = Profiler.createProfile(locator, clonedPortlets);
}
else
{
profile = Profiler.createProfile(locator, null);
}
setRefreshPsmlFlag(rundata, TRUE);
}
else
{
logger.error("Profile listed in Copy From Not Found!");
}
}
catch (EntityExistsException e)
{
// log the error msg
logger.error("Exception", e);
//
// dup key found - display error message - bring back to same screen
//
JetspeedLink link = JetspeedLinkFactory.getInstance(rundata);
DynamicURI duri = link.getPaneByName(PSML_UPDATE_PANE)
.addPathInfo(SecurityConstants.PARAM_MODE,
SecurityConstants.PARAM_MODE_INSERT)
.addPathInfo(SecurityConstants.PARAM_MSGID,
SecurityConstants.MID_ENTITY_ALREADY_EXISTS);
JetspeedLinkFactory.putInstance(link);
rundata.setRedirectURI(duri.toString());
}
catch (Exception e)
{
// log the error msg
logger.error("Exception", e);
//
// dup key found - display error message - bring back to same screen
//
JetspeedLink link = JetspeedLinkFactory.getInstance(rundata);
DynamicURI duri = link.getPaneByName(PSML_UPDATE_PANE)
.addPathInfo(SecurityConstants.PARAM_MODE,
SecurityConstants.PARAM_MODE_INSERT)
.addPathInfo(SecurityConstants.PARAM_MSGID,
SecurityConstants.MID_UPDATE_FAILED);
JetspeedLinkFactory.putInstance(link);
rundata.setRedirectURI(duri.toString());
}
// save values that user just entered so they don't have to re-enter
if (locator != null)
rundata.getUser().setTemp(TEMP_LOCATOR, locator);
if (categoryName != null)
rundata.getUser().setTemp(CATEGORY_NAME, categoryName);
if (categoryValue != null)
rundata.getUser().setTemp(CATEGORY_VALUE, categoryValue);
if (copyFrom != null)
rundata.getUser().setTemp(COPY_FROM, copyFrom);
}
/**
* Delete Psml entry
*/
public void doDelete(RunData rundata, Context context) throws Exception
{
try
{
ProfileLocator locator = (ProfileLocator)rundata.getUser().getTemp(TEMP_LOCATOR);
if (locator != null)
{
Profiler.removeProfile(locator);
setRefreshPsmlFlag(rundata, TRUE);
}
else
{
logger.error("ProfileLocator not found!");
}
}
catch(Exception e)
{
// log the error msg
logger.error("Exception", e);
//
// dup key found - display error message - bring back to same screen
//
JetspeedLink link = JetspeedLinkFactory.getInstance(rundata);
DynamicURI duri = link.getPaneByName(PSML_UPDATE_PANE)
.addPathInfo(SecurityConstants.PARAM_MODE, SecurityConstants.PARAM_MODE_DELETE)
.addPathInfo(SecurityConstants.PARAM_MSGID,
SecurityConstants.MID_DELETE_FAILED);
JetspeedLinkFactory.putInstance(link);
rundata.setRedirectURI(duri.toString());
}
}
public void setRefreshPsmlFlag(RunData rundata, String value)
{
rundata.getUser().setTemp(PSML_REFRESH_FLAG, TRUE);
}
/**
* File Export Action for Psml.
*
* @param rundata The turbine rundata context for this request.
* @param context The velocity context for this request.
*/
public void doExport(RunData rundata, Context context)
throws Exception
{
Profile profile = null;
ProfileLocator locator = null;
String copyTo = null;
String copyFrom = null;
try
{
copyFrom = rundata.getParameters().getString("CopyFrom");
copyTo = rundata.getParameters().getString("CopyTo");
//
// retrieve the profile to clone
//
ProfileLocator baseLocator = Profiler.createLocator();
baseLocator.createFromPath(copyFrom);
Profile baseProfile = Profiler.getProfile(baseLocator);
//
// Export profile
//
if(baseProfile != null)
{
PSMLDocument doc = baseProfile.getDocument();
if(doc != null)
{
if (!this.saveDocument(copyTo,doc))
throw new Exception("Failed to save PSML document");
rundata.addMessage("Profile [" + copyFrom + "] has been saved to disk in [" + copyTo + "]<br>");
}
}
else
{
logger.error("Profile listed in Copy From Not Found!");
}
}
catch (Exception e)
{
// log the error msg
logger.error("Exception", e);
//
// dup key found - display error message - bring back to same screen
//
JetspeedLink link = JetspeedLinkFactory.getInstance(rundata);
DynamicURI duri = link.getPaneByName(PSML_UPDATE_PANE)
.addPathInfo(SecurityConstants.PARAM_MODE,
"export")
.addPathInfo(SecurityConstants.PARAM_MSGID,
SecurityConstants.MID_UPDATE_FAILED);
JetspeedLinkFactory.putInstance(link);
rundata.setRedirectURI(duri.toString());
}
// save values that user just entered so they don't have to re-enter
if (copyTo != null)
rundata.getUser().setTemp(COPY_TO, copyTo);
if (copyFrom != null)
rundata.getUser().setTemp(COPY_FROM, copyFrom);
}
/**
* File Export All Action for Psml.
*
* @param rundata The turbine rundata context for this request.
* @param context The velocity context for this request.
*/
public void doExportall(RunData rundata, Context context)
throws Exception
{
String copyTo = null;
logger.info("PsmlUpdateAction: Starting export all operation");
try
{
copyTo = rundata.getParameters().getString("CopyTo");
//
// retrieve the profiles to export
//
Iterator i = Profiler.query(new QueryLocator(QueryLocator.QUERY_ALL));
while (i.hasNext())
{
Profile profile = (Profile) i.next();
PSMLDocument doc = profile.getDocument();
if(doc != null)
{
// Build the fully qualified file name
StringBuffer copyToFile = new StringBuffer(copyTo);
copyToFile.append(File.separator);
if (profile.getGroupName() != null)
{
copyToFile.append("group");
copyToFile.append(File.separator);
copyToFile.append(profile.getGroupName());
copyToFile.append(File.separator);
}
else if (profile.getRoleName() != null)
{
copyToFile.append("role");
copyToFile.append(File.separator);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?