X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmircoders%2Flocalizer%2Fbasic%2FMirBasicAdminInterfaceLocalizer.java;h=74e1b3efd1f38bb5fc029cf46179f2fd860ba4ee;hb=3d6d6279b8ad710d4ec72ddec1976894ef8099a4;hp=e680a6c177062ca3e7c9cdd411132456fb1e5ebb;hpb=8563841098b6ab3e6233f61519e58b41dcc30266;p=mir.git diff --git a/source/mircoders/localizer/basic/MirBasicAdminInterfaceLocalizer.java b/source/mircoders/localizer/basic/MirBasicAdminInterfaceLocalizer.java index e680a6c1..74e1b3ef 100755 --- a/source/mircoders/localizer/basic/MirBasicAdminInterfaceLocalizer.java +++ b/source/mircoders/localizer/basic/MirBasicAdminInterfaceLocalizer.java @@ -31,132 +31,290 @@ package mircoders.localizer.basic; -import java.util.*; -import mir.entity.adapter.*; -import mir.storage.*; -import mir.entity.*; -import mircoders.localizer.*; -import mircoders.entity.*; -import mircoders.storage.*; +import java.text.SimpleDateFormat; +import java.util.GregorianCalendar; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Vector; + +import mir.entity.Entity; +import mir.entity.adapter.EntityAdapter; +import mir.misc.StringUtil; +import mir.storage.StorageObjectFailure; +import mir.util.StringRoutines; +import mircoders.entity.EntityComment; +import mircoders.entity.EntityContent; +import mircoders.localizer.MirAdminInterfaceLocalizer; +import mircoders.localizer.MirLocalizerExc; +import mircoders.localizer.MirLocalizerFailure; +import mircoders.storage.DatabaseContent; public class MirBasicAdminInterfaceLocalizer implements MirAdminInterfaceLocalizer { - private Map simpleCommentOperations; - private Map simpleArticleOperations; + private Vector simpleCommentOperations; + private Vector simpleArticleOperations; + private Map simpleCommentOperationsMap; + private Map simpleArticleOperationsMap; + private static SimpleDateFormat dateFormatter = new SimpleDateFormat("dd.MM.yyyy HH:mm"); + + public MirBasicAdminInterfaceLocalizer() throws MirLocalizerFailure, MirLocalizerExc { + simpleCommentOperations = new Vector(); + simpleArticleOperations = new Vector(); + simpleCommentOperationsMap = new HashMap(); + simpleArticleOperationsMap = new HashMap(); - public MirBasicAdminInterfaceLocalizer() throws MirLocalizerFailure, MirLocalizerException { - simpleCommentOperations = new HashMap(); - simpleArticleOperations = new HashMap(); + 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)); + + addSimpleCommentOperation(new ModifyCommentFieldOperation("unhide", "is_published", "1")); + addSimpleCommentOperation(new ModifyCommentFieldOperation("hide", "is_published", "0")); + } - buildSimpleCommentOperations(simpleCommentOperations); - buildSimpleArticleOperations(simpleArticleOperations); + public String makePasswordDigest(String aPassword) { + return aPassword; } - public Map simpleCommentOperations() { + public void initializeArticle(Map anArticle) { + anArticle.put("is_published", "0"); + anArticle.put("date", StringUtil.date2webdbDate(new GregorianCalendar())); + }; + + public List simpleCommentOperations() { return simpleCommentOperations; }; - public Map simpleArticleOperations() { + public List simpleArticleOperations() { return simpleArticleOperations; }; - public void buildSimpleCommentOperations(Map anOperations) throws MirLocalizerFailure, MirLocalizerException { - anOperations.put("hide", new HideCommentOperation()); - anOperations.put("unhide", new UnhideCommentOperation()); + public MirSimpleEntityOperation simpleArticleOperationForName(String aName) { + return (MirSimpleEntityOperation) simpleArticleOperationsMap.get(aName); }; - public void buildSimpleArticleOperations(Map anOperations) throws MirLocalizerFailure, MirLocalizerException { - anOperations.put("hide", new HideArticleOperation()); - anOperations.put("unhide", new UnhideArticleOperation()); + public MirSimpleEntityOperation simpleCommentOperationForName(String aName) { + return (MirSimpleEntityOperation) simpleCommentOperationsMap.get(aName); }; + public void removeSimpleArticleOperation(String aName) { + simpleArticleOperations.remove(simpleArticleOperationsMap.get(aName)); + simpleArticleOperationsMap.remove(aName); + } + + public void addSimpleArticleOperation(MirSimpleEntityOperation anOperation) { + removeSimpleArticleOperation(anOperation.getName()); + simpleArticleOperationsMap.put(anOperation.getName(), anOperation); + simpleArticleOperations.add(anOperation); + } + + public void removeSimpleCommentOperation(String aName) { + simpleCommentOperations.remove(simpleCommentOperationsMap.get(aName)); + simpleCommentOperationsMap.remove(aName); + } + + public void addSimpleCommentOperation(MirSimpleEntityOperation anOperation) { + removeSimpleCommentOperation(anOperation.getName()); + simpleCommentOperationsMap.put(anOperation.getName(), anOperation); + simpleCommentOperations.add(anOperation); + } + protected abstract static class EntityModifyingOperation implements MirSimpleEntityOperation { + private String name; + + protected EntityModifyingOperation(String aName) { + name = aName; + } + + public String getName() { + return name; + }; + public boolean isAvailable(EntityAdapter anEntity) { try { - Entity entity = anEntity.getEntity(); - return (entity instanceof EntityComment) && isAvailable((EntityComment) entity); + return isAvailable(entity); } catch (Throwable t) { return false; } }; - public void perform(EntityAdapter anEntity) { + public void perform(EntityAdapter aUser, EntityAdapter anEntity) { Entity entity = anEntity.getEntity(); try { - performModification(entity); + performModification(aUser, entity); entity.update(); } catch (Throwable t) { } }; - protected abstract boolean isAvailable(Entity anEntity) throws StorageObjectException ; - protected abstract void performModification(Entity anEntity) throws StorageObjectException ; + protected abstract boolean isAvailable(Entity anEntity) throws StorageObjectFailure ; + protected abstract void performModification(EntityAdapter aUser, Entity anEntity) throws StorageObjectFailure ; } public static abstract class CommentModifyingOperation extends EntityModifyingOperation { - protected boolean isAvailable(Entity anEntity) throws StorageObjectException { + public CommentModifyingOperation(String aName) { + super(aName); + } + + protected boolean isAvailable(Entity anEntity) throws StorageObjectFailure { return anEntity instanceof EntityComment && isAvailable((EntityComment) anEntity); } - protected void performModification(Entity anEntity) throws StorageObjectException { - performModification((EntityComment) anEntity); + protected void performModification(EntityAdapter aUser, Entity anEntity) throws StorageObjectFailure { + performModification(aUser, (EntityComment) anEntity); DatabaseContent.getInstance().setUnproduced("id="+anEntity.getValue("to_media")); }; - protected abstract boolean isAvailable(EntityComment aComment) throws StorageObjectException ; - protected abstract void performModification(EntityComment aComment) throws StorageObjectException ; + protected abstract boolean isAvailable(EntityComment aComment) throws StorageObjectFailure ; + protected abstract void performModification(EntityAdapter aUser, EntityComment aComment) throws StorageObjectFailure ; } public static abstract class ArticleModifyingOperation extends EntityModifyingOperation { - protected boolean isAvailable(Entity anEntity) throws StorageObjectException { - return anEntity instanceof EntityContent && isAvailable((EntityComment) anEntity); + private boolean logOperation; + + public ArticleModifyingOperation(String aName, boolean aLogOperation) { + super(aName); + + logOperation = aLogOperation; + } + + protected boolean isAvailable(Entity anEntity) throws StorageObjectFailure { + return anEntity instanceof EntityContent && isAvailable((EntityContent) anEntity); } - protected void performModification(Entity anEntity) throws StorageObjectException { - performModification((EntityContent) anEntity); + protected void performModification(EntityAdapter aUser, Entity anEntity) throws StorageObjectFailure { + performModification(aUser, (EntityContent) anEntity); anEntity.setValueForProperty("is_produced", "0"); + + if (logOperation) { + StringBuffer comment = new StringBuffer(); + try { + comment.append(StringRoutines.interpretAsString(anEntity.getValue("comment"))); + } + catch (Throwable t) { + } + if (comment.length()>0 && comment.charAt(comment.length()-1)!='\n') { + comment.append('\n'); + } + comment.append(dateFormatter.format((new GregorianCalendar()).getTime())); + comment.append(" "); + try { + comment.append(StringRoutines.interpretAsString(aUser.get("login"))); + } + catch (Throwable t) { + } + comment.append(" "); + comment.append(getName()); + anEntity.setValueForProperty("comment", comment.toString()); + } }; - protected abstract boolean isAvailable(EntityContent anArticle) throws StorageObjectException ; - protected abstract void performModification(EntityContent anArticle) throws StorageObjectException ; + protected abstract boolean isAvailable(EntityContent anArticle) throws StorageObjectFailure ; + protected abstract void performModification(EntityAdapter aUser, EntityContent anArticle) throws StorageObjectFailure ; } - private static class HideCommentOperation extends CommentModifyingOperation { + protected static class SetCommentFieldOperation extends CommentModifyingOperation { + private String field; + private String value; + + public SetCommentFieldOperation(String aName, String aField, String aValue) { + super(aName); + + field = aField; + value = aValue; + } + protected boolean isAvailable(EntityComment aComment) { - return aComment.getValue("is_published").equals("1"); + return true; } - protected void performModification(EntityComment aComment) throws StorageObjectException { - aComment.setValueForProperty("is_published", "0"); + + protected void performModification(EntityAdapter aUser, EntityComment aComment) throws StorageObjectFailure { + aComment.setValueForProperty(field, value); } } - private static class UnhideCommentOperation extends CommentModifyingOperation { + protected static class ModifyCommentFieldOperation extends CommentModifyingOperation { + private String field; + private String value; + + public ModifyCommentFieldOperation(String aName, String aField, String aValue) { + super(aName); + + field = aField; + value = aValue; + } + protected boolean isAvailable(EntityComment aComment) { - return aComment.getValue("is_published").equals("0"); + return aComment.getValue(field) == null || !aComment.getValue(field).equals(value); } - protected void performModification(EntityComment aComment) throws StorageObjectException { - aComment.setValueForProperty("is_published", "1"); + + protected void performModification(EntityAdapter aUser, EntityComment aComment) throws StorageObjectFailure { + aComment.setValueForProperty(field, value); } } - private static class HideArticleOperation extends ArticleModifyingOperation { + protected static class SetArticleFieldOperation extends ArticleModifyingOperation { + private String field; + private String value; + + public SetArticleFieldOperation(String aName, String aField, String aValue, boolean aLogOperation) { + super(aName, aLogOperation); + + field = aField; + value = aValue; + } + protected boolean isAvailable(EntityContent anArticle) { - return anArticle.getValue("is_published").equals("1"); + return true; } - protected void performModification(EntityContent anArticle) throws StorageObjectException { - anArticle.setValueForProperty("is_published", "0"); + + protected void performModification(EntityAdapter aUser, EntityContent anArticle) throws StorageObjectFailure { + anArticle.setValueForProperty(field, value); } } - private static class UnhideArticleOperation extends ArticleModifyingOperation { + protected static class ModifyArticleFieldOperation extends ArticleModifyingOperation { + private String field; + private String value; + + public ModifyArticleFieldOperation(String aName, String aField, String aValue, boolean aLogOperation) { + super(aName, aLogOperation); + + field = aField; + value = aValue; + } + + protected boolean isAvailable(EntityContent anArticle) { + return anArticle.getValue(field) == null || !anArticle.getValue(field).equals(value); + } + + protected void performModification(EntityAdapter aUser, EntityContent anArticle) throws StorageObjectFailure { + anArticle.setValueForProperty(field, value); + } + } + + protected static class ChangeArticleFieldOperation extends ArticleModifyingOperation { + private String field; + private String oldValue; + private String newValue; + + public ChangeArticleFieldOperation(String aName, String aField, String anOldValue, String aNewValue, boolean aLogOperation) { + super(aName, aLogOperation); + + field = aField; + newValue = aNewValue; + oldValue = anOldValue; + } + protected boolean isAvailable(EntityContent anArticle) { - return anArticle.getValue("is_published").equals("0"); + return anArticle.getValue(field) != null && anArticle.getValue(field).equals(oldValue); } - protected void performModification(EntityContent anArticle) throws StorageObjectException { - anArticle.setValueForProperty("is_published", "1"); + + protected void performModification(EntityAdapter aUser, EntityContent anArticle) throws StorageObjectFailure { + anArticle.setValueForProperty(field, newValue); } } -} \ No newline at end of file +}