added:
[mir.git] / source / mircoders / localizer / basic / MirBasicAdminInterfaceLocalizer.java
index ef75632..ccdb4a8 100755 (executable)
@@ -63,6 +63,8 @@ import mircoders.localizer.MirAdminInterfaceLocalizer;
 import mircoders.localizer.MirLocalizerExc;
 import mircoders.localizer.MirLocalizerFailure;
 import mircoders.module.ModuleLanguage;
+import mircoders.module.ModuleContent;
+import mircoders.module.ModuleComment;
 import mircoders.storage.DatabaseContent;
 
 
@@ -110,18 +112,22 @@ public class MirBasicAdminInterfaceLocalizer implements MirAdminInterfaceLocaliz
     addSimpleArticleOperation(new ChangeArticleFieldOperation("newswire", "to_article_type", "0", "1", false));
     addSimpleArticleOperation(new ModifyArticleFieldOperation("unhide", "is_published", "1", false));
     addSimpleArticleOperation(new ModifyArticleFieldOperation("hide", "is_published", "0", false));
+    addSimpleArticleOperation(new DeleteEntityOperation("delete"));
 
     addSimpleCommentOperation(new ModifyCommentFieldOperation("unhide", "is_published", "1"));
     addSimpleCommentOperation(new ModifyCommentFieldOperation("hide", "is_published", "0"));
+    addSimpleCommentOperation(new DeleteEntityOperation("delete"));
   }
 
   /** {@inheritDoc} */
-  public String getAdminPageGenerator(String aPage, Map aTemplateData, EntityAdapter aUser, String aDefault) throws MirLocalizerExc {
+  public String getAdminPageGenerator(String aPage, Map aTemplateData, EntityAdapter aUser,
+                                      String aDefault) throws MirLocalizerExc {
     return aDefault;
   }
 
   /** {@inheritDoc} */
-  public Generator prepareArticlePreview(String aPreviewPage, EntityAdapter anArticle, Map aContext) throws MirLocalizerExc {
+  public Generator prepareArticlePreview(String aPreviewPage, EntityAdapter anArticle,
+                                         Map aContext) throws MirLocalizerExc {
     MirGlobal.localizer().producerAssistant().initializeGenerationValueSet(aContext);
     aContext.put("article", anArticle);
 
@@ -186,12 +192,12 @@ public class MirBasicAdminInterfaceLocalizer implements MirAdminInterfaceLocaliz
     return Collections.unmodifiableList(simpleArticleOperations);
   }
 
-  public MirSimpleEntityOperation simpleArticleOperationForName(String aName) {
-    return (MirSimpleEntityOperation) simpleArticleOperationsMap.get(aName);
+  public EntityOperation simpleArticleOperationForName(String aName) {
+    return (EntityOperation) simpleArticleOperationsMap.get(aName);
   }
 
-  public MirSimpleEntityOperation simpleCommentOperationForName(String aName) {
-    return (MirSimpleEntityOperation) simpleCommentOperationsMap.get(aName);
+  public EntityOperation simpleCommentOperationForName(String aName) {
+    return (EntityOperation) simpleCommentOperationsMap.get(aName);
   }
 
   public void removeSimpleArticleOperation(String aName) {
@@ -199,7 +205,7 @@ public class MirBasicAdminInterfaceLocalizer implements MirAdminInterfaceLocaliz
     simpleArticleOperationsMap.remove(aName);
   }
 
-  public void addSimpleArticleOperation(MirSimpleEntityOperation anOperation) {
+  public void addSimpleArticleOperation(EntityOperation anOperation) {
     removeSimpleArticleOperation(anOperation.getName());
     simpleArticleOperationsMap.put(anOperation.getName(), anOperation);
     simpleArticleOperations.add(anOperation);
@@ -210,13 +216,13 @@ public class MirBasicAdminInterfaceLocalizer implements MirAdminInterfaceLocaliz
     simpleCommentOperationsMap.remove(aName);
   }
 
-  public void addSimpleCommentOperation(MirSimpleEntityOperation anOperation) {
+  public void addSimpleCommentOperation(EntityOperation anOperation) {
     removeSimpleCommentOperation(anOperation.getName());
     simpleCommentOperationsMap.put(anOperation.getName(), anOperation);
     simpleCommentOperations.add(anOperation);
   }
 
-  protected abstract static class EntityModifyingOperation implements MirSimpleEntityOperation {
+  protected abstract static class EntityModifyingOperation implements EntityOperation {
     private String name;
     private boolean logOperation;
 
@@ -449,4 +455,39 @@ public class MirBasicAdminInterfaceLocalizer implements MirAdminInterfaceLocaliz
       anArticle.setFieldValue(field, newValue);
     }
   }
+
+  public static class DeleteEntityOperation implements EntityOperation {
+    private String name;
+    private ModuleContent content;
+    private ModuleComment comment;
+
+    public DeleteEntityOperation(String aName) {
+      name = aName;
+      comment = new ModuleComment();
+      content = new ModuleContent();
+    }
+
+    public String getName() {
+      return "delete";
+    }
+
+    public boolean isAvailable(EntityAdapter anEntity) throws MirLocalizerExc, MirLocalizerFailure {
+      return false;
+    }
+
+    public void perform(EntityAdapter aUser, EntityAdapter anEntity) throws MirLocalizerExc, MirLocalizerFailure {
+      Entity entity = anEntity.getEntity();
+      try {
+        if (entity instanceof EntityContent) {
+          content.deleteById(entity.getId());
+        }
+        else if (entity instanceof EntityComment) {
+          comment.deleteById(entity.getId());
+        }
+      }
+      catch (ModuleExc e) {
+        throw new MirLocalizerFailure(e);
+      }
+    }
+  }
 }