Fixed potenial cast error in ImageBrowser

git-svn-id: https://svn.libreccm.org/ccm/trunk@5174 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2017-12-21 08:39:21 +00:00
parent a0b89a168d
commit 2f79a0e8e6
2 changed files with 163 additions and 125 deletions

View File

@ -113,7 +113,8 @@ public class ImageBrowser extends Table {
* Construct a new ImageBrowser with default mode. * Construct a new ImageBrowser with default mode.
* *
* @param builder the {@link ImageBrowserModelBuilder} that will supply this * @param builder the {@link ImageBrowserModelBuilder} that will supply this
* component with its {@link ImageBrowserModel} during each request * component with its {@link ImageBrowserModel} during each
* request
*/ */
public ImageBrowser(ImageBrowserModelBuilder b) { public ImageBrowser(ImageBrowserModelBuilder b) {
@ -124,7 +125,8 @@ public class ImageBrowser extends Table {
* Construct a new ImageBrowser table with requested mode. * Construct a new ImageBrowser table with requested mode.
* *
* @param builder the {@link ImageBrowserModelBuilder} that will supply this * @param builder the {@link ImageBrowserModelBuilder} that will supply this
* component with its {@link ImageBrowserModel} during each request * component with its {@link ImageBrowserModel} during each
* request
* @param mode the component mode (see {@link ImageComponent}) * @param mode the component mode (see {@link ImageComponent})
*/ */
public ImageBrowser(ImageBrowserModelBuilder b, int mode) { public ImageBrowser(ImageBrowserModelBuilder b, int mode) {
@ -375,21 +377,21 @@ public class ImageBrowser extends Table {
if (sm.canAccess(state.getRequest(), if (sm.canAccess(state.getRequest(),
SecurityManager.DELETE_IMAGES)) { SecurityManager.DELETE_IMAGES)) {
try { try {
//vorher war ImageAsset
ReusableImageAsset asset = (ReusableImageAsset) DomainObjectFactory final ImageAsset asset = (ImageAsset) DomainObjectFactory
.newInstance(new OID( .newInstance(new OID(
ImageAsset.BASE_DATA_OBJECT_TYPE, ImageAsset.BASE_DATA_OBJECT_TYPE,
(BigDecimal) key)); key));
if (asset instanceof ReusableImageAsset) {
canDelete = !asset.isInUse(); final ReusableImageAsset reusable
= (ReusableImageAsset) asset;
//XXX Find a new way to figure out, if this image is used by any CI so we can canDelete = !reusable.isInUse();
// decide if it can be deleted } else {
// if (!GenericArticleImageAssociation.imageHasAssociation(asset)) { canDelete = false;
// canDelete = true; }
// } } catch (DataObjectNotFoundException ex) {
} catch (DataObjectNotFoundException e) { throw new RuntimeException(ex);
// can't find asset, can't delete it
} }
} }
@ -407,19 +409,23 @@ public class ImageBrowser extends Table {
} }
//get all items that uses the image: //get all items that uses the image:
try { try {
ReusableImageAsset asset = (ReusableImageAsset) DomainObjectFactory final ImageAsset asset = (ImageAsset) DomainObjectFactory
.newInstance(new OID( .newInstance(new OID(
ImageAsset.BASE_DATA_OBJECT_TYPE, ImageAsset.BASE_DATA_OBJECT_TYPE,
(BigDecimal) key)); key));
List list = asset.getImageUsers(); if (asset instanceof ReusableImageAsset) {
final List list = ((ReusableImageAsset) asset)
.getImageUsers();
return createLabel(list, state); return createLabel(list, state);
} else {
} catch (DataObjectNotFoundException e) { return new Label("");
// can't find asset, can't delete it }
} catch (DataObjectNotFoundException ex) {
throw new RuntimeException(ex);
} }
return new Label("image is in use"); // return new Label("image is in use");
} }
} }
@ -429,6 +435,7 @@ public class ImageBrowser extends Table {
* *
* @param list list with the itemIDs * @param list list with the itemIDs
* @param state PageState * @param state PageState
*
* @return * @return
*/ */
private BoxPanel createLabel(List list, PageState state) { private BoxPanel createLabel(List list, PageState state) {
@ -463,6 +470,7 @@ public class ImageBrowser extends Table {
* @param state PageState * @param state PageState
* @param list list with itemIDs * @param list list with itemIDs
* @param index * @param index
*
* @return * @return
*/ */
private Link createLink(PageState state, List list, int index) { private Link createLink(PageState state, List list, int index) {

View File

@ -18,8 +18,24 @@
*/ */
package com.arsdigita.cms.ui.category; package com.arsdigita.cms.ui.category;
import com.arsdigita.bebop.*; import com.arsdigita.bebop.ActionLink;
import com.arsdigita.bebop.event.*; import com.arsdigita.bebop.Form;
import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.List;
import com.arsdigita.bebop.Page;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.ParameterSingleSelectionModel;
import com.arsdigita.bebop.SimpleContainer;
import com.arsdigita.bebop.SingleSelectionModel;
import com.arsdigita.bebop.Tree;
import com.arsdigita.bebop.event.ActionEvent;
import com.arsdigita.bebop.event.ActionListener;
import com.arsdigita.bebop.event.ChangeEvent;
import com.arsdigita.bebop.event.ChangeListener;
import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.bebop.event.PrintEvent;
import com.arsdigita.bebop.event.PrintListener;
import com.arsdigita.bebop.parameters.ParameterModel; import com.arsdigita.bebop.parameters.ParameterModel;
import com.arsdigita.bebop.parameters.StringParameter; import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.categorization.CategorizedCollection; import com.arsdigita.categorization.CategorizedCollection;
@ -38,9 +54,13 @@ import com.arsdigita.kernel.permissions.PrivilegeDescriptor;
import com.arsdigita.toolbox.ui.ActionGroup; import com.arsdigita.toolbox.ui.ActionGroup;
import com.arsdigita.toolbox.ui.Section; import com.arsdigita.toolbox.ui.Section;
import com.arsdigita.xml.Element; import com.arsdigita.xml.Element;
import java.math.BigDecimal; import java.math.BigDecimal;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import static com.arsdigita.web.Web.*;
/** /**
* A split pane for the Category Administration UI. * A split pane for the Category Administration UI.
* *
@ -50,9 +70,10 @@ import org.apache.log4j.Logger;
public final class CategoryAdminPane extends BaseAdminPane { public final class CategoryAdminPane extends BaseAdminPane {
public static final String CONTEXT_SELECTED = "sel_context"; public static final String CONTEXT_SELECTED = "sel_context";
private static final String DEFAULT_USE_CONTEXT = private static final String DEFAULT_USE_CONTEXT
CategoryUseContextModelBuilder.DEFAULT_USE_CONTEXT; = CategoryUseContextModelBuilder.DEFAULT_USE_CONTEXT;
private static final Logger s_log = Logger.getLogger(CategoryAdminPane.class); private static final Logger s_log = Logger
.getLogger(CategoryAdminPane.class);
private final SingleSelectionModel m_contextModel; private final SingleSelectionModel m_contextModel;
private final Tree m_categoryTree; private final Tree m_categoryTree;
private final SingleSelectionModel m_model; private final SingleSelectionModel m_model;
@ -62,7 +83,8 @@ public final class CategoryAdminPane extends BaseAdminPane {
public CategoryAdminPane() { public CategoryAdminPane() {
super(); super();
m_contextModel = new UseContextSelectionModel(new StringParameter(CONTEXT_SELECTED)); m_contextModel = new UseContextSelectionModel(new StringParameter(
CONTEXT_SELECTED));
/* Left column */ /* Left column */
/* Use context section */ /* Use context section */
@ -71,7 +93,8 @@ public final class CategoryAdminPane extends BaseAdminPane {
list.addChangeListener(new ContextSelectionListener()); list.addChangeListener(new ContextSelectionListener());
/* Category tree section */ /* Category tree section */
m_categoryTree = new BaseTree(new CategoryTreeModelBuilder(m_contextModel)); m_categoryTree = new BaseTree(new CategoryTreeModelBuilder(
m_contextModel));
m_categoryTree.addChangeListener(new SelectionListener()); m_categoryTree.addChangeListener(new SelectionListener());
m_model = m_categoryTree.getSelectionModel(); m_model = m_categoryTree.getSelectionModel();
@ -115,7 +138,8 @@ public final class CategoryAdminPane extends BaseAdminPane {
setEdit(gz("cms.ui.category.edit"), setEdit(gz("cms.ui.category.edit"),
new CategoryEditForm(m_parent, m_category)); new CategoryEditForm(m_parent, m_category));
setDelete(new DeleteLink(new Label(gz("cms.ui.category.delete"))), new DeleteForm( setDelete(new DeleteLink(new Label(gz("cms.ui.category.delete"))),
new DeleteForm(
new SimpleContainer())); new SimpleContainer()));
setIntroPane(new Label(gz("cms.ui.category.intro"))); setIntroPane(new Label(gz("cms.ui.category.intro")));
@ -129,7 +153,6 @@ public final class CategoryAdminPane extends BaseAdminPane {
//m_contextList = new List(new ContextListModelBuilder()); //m_contextList = new List(new ContextListModelBuilder());
//m_contextList.adChangeListener(new ContextListSelectionListener()); //m_contextList.adChangeListener(new ContextListSelectionListener());
//m_contextModel = m_contextList.getSelectionModel(); //m_contextModel = m_contextList.getSelectionModel();
} }
@Override @Override
@ -156,8 +179,8 @@ public final class CategoryAdminPane extends BaseAdminPane {
Category cat = m_category.getCategory(state); Category cat = m_category.getCategory(state);
String context = getUseContext(state); String context = getUseContext(state);
boolean isDefaultContext = boolean isDefaultContext = (context == null) || DEFAULT_USE_CONTEXT
(context == null) || DEFAULT_USE_CONTEXT.equals(context); .equals(context);
if (cat.isRoot() || !cat.getChildren().isEmpty()) { if (cat.isRoot() || !cat.getChildren().isEmpty()) {
m_alternativeLabel.generateXML(state, parent); m_alternativeLabel.generateXML(state, parent);
@ -175,15 +198,15 @@ public final class CategoryAdminPane extends BaseAdminPane {
prompt.add(new Label(gz("cms.ui.category.delete_prompt"))); prompt.add(new Label(gz("cms.ui.category.delete_prompt")));
Label catLabel = new Label(); Label catLabel = new Label();
catLabel.addPrintListener(new PrintListener() { catLabel.addPrintListener(new PrintListener() {
public void prepare(PrintEvent pe) { public void prepare(PrintEvent pe) {
Label label = (Label) pe.getTarget(); Label label = (Label) pe.getTarget();
Category cat = Category cat = m_category.getCategory(pe.getPageState());
m_category.getCategory(pe.getPageState());
CategoryCollection descendants = cat.getDescendants(); CategoryCollection descendants = cat.getDescendants();
final long nDescendants = descendants.size() - 1; final long nDescendants = descendants.size() - 1;
descendants.close(); descendants.close();
CategorizedCollection descObjects = CategorizedCollection descObjects = cat
cat.getDescendantObjects(); .getDescendantObjects();
final long nDescObjects = descObjects.size(); final long nDescObjects = descObjects.size();
descObjects.close(); descObjects.close();
StringBuffer sb = new StringBuffer(" "); StringBuffer sb = new StringBuffer(" ");
@ -197,7 +220,8 @@ public final class CategoryAdminPane extends BaseAdminPane {
sb.append(" descendant object(s). "); sb.append(" descendant object(s). ");
} }
if (nDescendants > 0 || nDescObjects > 0) { if (nDescendants > 0 || nDescObjects > 0) {
sb.append("Descendants will be orphaned, if this category is removed."); sb.append(
"Descendants will be orphaned, if this category is removed.");
} }
label.setLabel(sb.toString()); label.setLabel(sb.toString());
} }
@ -214,17 +238,19 @@ public final class CategoryAdminPane extends BaseAdminPane {
return; return;
} }
PermissionService.assertPermission(new PermissionDescriptor(PrivilegeDescriptor.DELETE, PermissionService.assertPermission(new PermissionDescriptor(
PrivilegeDescriptor.DELETE,
category, category,
Kernel.getContext(). Kernel.getContext().
getParty())); getParty()));
if (category.isRoot()) { if (category.isRoot()) {
Category root = Category root = Category.getRootForObject(CMS.getContext()
Category.getRootForObject(CMS.getContext().getContentSection(), .getContentSection(),
getUseContext(state)); getUseContext(state));
if (category.equals(root)) { if (category.equals(root)) {
Category.clearRootForObject(CMS.getContext().getContentSection(), Category.clearRootForObject(CMS.getContext()
.getContentSection(),
getUseContext(state)); getUseContext(state));
} }
m_contextModel.setSelectedKey(state, DEFAULT_USE_CONTEXT); m_contextModel.setSelectedKey(state, DEFAULT_USE_CONTEXT);
@ -268,9 +294,10 @@ public final class CategoryAdminPane extends BaseAdminPane {
final PageState state = e.getPageState(); final PageState state = e.getPageState();
if (!m_model.isSelected(state)) { if (!m_model.isSelected(state)) {
final Category root = final Category root = Category.getRootForObject(CMS.getContext()
Category.getRootForObject(CMS.getContext().getContentSection(), .getContentSection(),
getUseContext(state)); getUseContext(
state));
if (root != null) { if (root != null) {
m_model.setSelectedKey(state, root.getID()); m_model.setSelectedKey(state, root.getID());
} }
@ -306,15 +333,16 @@ public final class CategoryAdminPane extends BaseAdminPane {
public class ContextSelectionListener implements ChangeListener { public class ContextSelectionListener implements ChangeListener {
public final void stateChanged(final ChangeEvent e) { public final void stateChanged(final ChangeEvent e) {
s_log.debug("Selection state changed; I may change " + "the body's visible pane"); s_log.debug("Selection state changed; I may change "
+ "the body's visible pane");
final PageState state = e.getPageState(); final PageState state = e.getPageState();
getBody().reset(state); getBody().reset(state);
if (m_contextModel.isSelected(state)) { if (m_contextModel.isSelected(state)) {
final Category root = final Category root = Category
Category.getRootForObject(CMS.getContext().getContentSection(), .getRootForObject(CMS.getContext().getContentSection(),
getUseContext(state)); getUseContext(state));
if (root != null) { if (root != null) {
@ -324,11 +352,13 @@ public final class CategoryAdminPane extends BaseAdminPane {
} }
if (m_model.isSelected(state)) { if (m_model.isSelected(state)) {
s_log.debug("The selection model is selected; displaying " + "the item pane"); s_log.debug("The selection model is selected; displaying "
+ "the item pane");
getBody().push(state, getItemPane()); getBody().push(state, getItemPane());
} }
} }
} }
} }