X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmircoders%2Flocalizer%2Fbasic%2FMirBasicDataModelLocalizer.java;h=a0dc143f082d77513a11631c19cf70536837caed;hb=88455349028d7ecd46fe04ff8662b584c54c6143;hp=0c5714a50dde5ef064fdff99e445bdc4864e0e3f;hpb=14127fccd05fd4dc20411d3c551908103fcd28a9;p=mir.git diff --git a/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java b/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java index 0c5714a5..a0dc143f 100755 --- a/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java +++ b/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java @@ -31,7 +31,11 @@ package mircoders.localizer.basic; import mir.config.MirPropertiesConfiguration; import mir.entity.Entity; -import mir.entity.adapter.*; +import mir.entity.adapter.EntityAdapter; +import mir.entity.adapter.EntityAdapterDefinition; +import mir.entity.adapter.EntityAdapterModel; +import mir.entity.adapter.ToManyRelationField; +import mir.entity.adapter.ToOneRelationField; import mir.generator.Generator; import mir.generator.GeneratorExc; import mir.generator.GeneratorFailure; @@ -41,20 +45,26 @@ import mir.misc.NumberUtils; import mir.util.JDBCStringRoutines; import mir.util.ParameterExpander; import mir.util.StructuredContentParser; -import mircoders.entity.EntityUploadedMedia; import mircoders.entity.EntityContent; +import mircoders.entity.EntityUploadedMedia; import mircoders.global.MirGlobal; import mircoders.localizer.MirAdminInterfaceLocalizer; import mircoders.localizer.MirDataModelLocalizer; import mircoders.localizer.MirLocalizerExc; import mircoders.localizer.MirLocalizerFailure; import mircoders.media.MediaHelper; +import mircoders.module.ModuleCommentStatus; import mircoders.module.ModuleContent; import mircoders.module.ModuleLanguage; import mircoders.storage.*; import multex.Failure; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { protected LoggerWrapper logger = new LoggerWrapper("Localizer.DataModel"); @@ -75,7 +85,7 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { anEntityAdapterDefinition.addCalculatedField("language", new ToOneRelationField("to_language", "language", "id")); anEntityAdapterDefinition.addCalculatedField("commentcount", new ContentCommentCountField(" and is_published='1'")); anEntityAdapterDefinition.addCalculatedField("fullcommentcount", new ContentCommentCountField("")); - + anEntityAdapterDefinition.addCalculatedField("commentstatuscount", new CommentStatusCountField()); anEntityAdapterDefinition.addCalculatedField("mediacount", new ContentMediaCountField("uploaded_media", true)); anEntityAdapterDefinition.addCalculatedField("fullmediacount", new ContentMediaCountField("uploaded_media", false)); @@ -110,7 +120,7 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { anEntityAdapterDefinition.addCalculatedField("operations", new EntityToSimpleOperationsField(MirGlobal.localizer().adminInterface().simpleArticleOperations())); - + anEntityAdapterDefinition.addCalculatedField("languagename", new ContentToLanguageNameField()); anEntityAdapterDefinition.addCalculatedField("is_original", new ContentIsOriginalField()); @@ -123,7 +133,7 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { public Object getValue(EntityAdapter anEntityAdapter) { try { - return Boolean.valueOf(MirGlobal.localizer().openPostings(). + return new Boolean(MirGlobal.localizer().openPostings(). allowArticlePublication((EntityContent) anEntityAdapter.getEntity())); } catch (Throwable t) { @@ -209,27 +219,27 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { definition = new EntityAdapterDefinition(); definition.addCalculatedField("mediafolder", new ToOneRelationField("to_media_folder", "mediaFolder", "id")); - definition.addCalculatedField("human_readable_size", new HumanReadableSizeField("value")); + definition.addCalculatedField("human_readable_size", new HumanReadableSizeField("size")); definition.addDBDateField("creationdate", "webdb_create", configuration.getString("Mir.DefaultTimezone")); definition.addCalculatedField("info", new MediaToMediaInfoField()); result.addMapping( "uploadedMedia", DatabaseUploadedMedia.getInstance(), definition); definition = new EntityAdapterDefinition(); definition.addCalculatedField("mediafolder", new ToOneRelationField("to_media_folder", "mediaFolder", "id")); - definition.addCalculatedField("human_readable_size", new HumanReadableSizeField("value")); + definition.addCalculatedField("human_readable_size", new HumanReadableSizeField("size")); definition.addDBDateField("creationdate", "webdb_create", configuration.getString("Mir.DefaultTimezone")); definition.addCalculatedField("info", new MediaToMediaInfoField()); definition.addCalculatedField("big_icon", new MediaToBigIconField()); result.addMapping( "image", DatabaseImages.getInstance(), definition); definition = new EntityAdapterDefinition(); definition.addCalculatedField("mediafolder", new ToOneRelationField("to_media_folder", "mediaFolder", "id")); - definition.addCalculatedField("human_readable_size", new HumanReadableSizeField("value")); + definition.addCalculatedField("human_readable_size", new HumanReadableSizeField("size")); definition.addDBDateField("creationdate", "webdb_create", configuration.getString("Mir.DefaultTimezone")); definition.addCalculatedField("info", new MediaToMediaInfoField()); definition.addCalculatedField("big_icon", new MediaToBigIconField()); result.addMapping( "audio", DatabaseAudio.getInstance(), definition); definition = new EntityAdapterDefinition(); definition.addCalculatedField("mediafolder", new ToOneRelationField("to_media_folder", "mediaFolder", "id")); - definition.addCalculatedField("human_readable_size", new HumanReadableSizeField("value")); + definition.addCalculatedField("human_readable_size", new HumanReadableSizeField("size")); definition.addDBDateField("creationdate", "webdb_create", configuration.getString("Mir.DefaultTimezone")); definition.addCalculatedField("info", new MediaToMediaInfoField()); definition.addCalculatedField("big_icon", new MediaToBigIconField()); @@ -237,7 +247,7 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { definition = new EntityAdapterDefinition(); definition.addCalculatedField("mediafolder", new ToOneRelationField("to_media_folder", "mediaFolder", "id")); - definition.addCalculatedField("human_readable_size", new HumanReadableSizeField("value")); + definition.addCalculatedField("human_readable_size", new HumanReadableSizeField("size")); definition.addDBDateField("creationdate", "webdb_create", configuration.getString("Mir.DefaultTimezone")); definition.addCalculatedField("info", new MediaToMediaInfoField()); definition.addCalculatedField("big_icon", new MediaToBigIconField()); @@ -330,7 +340,7 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { if (anEntityAdapter.get("is_html")!=null && anEntityAdapter.get("is_html").equals("1")) { return MirGlobal.localizer().producerAssistant().filterHTMLText((String) anEntityAdapter.get(fieldName)); } - return MirGlobal.localizer().producerAssistant().filterNonHTMLText((String) anEntityAdapter.get(fieldName)); + return MirGlobal.localizer().producerAssistant().filterNonHTMLText((String) anEntityAdapter.get(fieldName)); } catch (Throwable t) { throw new RuntimeException(t.getMessage()); @@ -402,43 +412,45 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { } } } + public static class MediaInfo { private MediaHandler mediaHandler; + private Entity mediaType; - public MediaInfo(MediaHandler aHandler) { + public MediaInfo(MediaHandler aHandler, Entity aMediaType) { mediaHandler = aHandler; + mediaType = aMediaType; } + public String getBigIcon() { - if (mediaHandler == null) - return "bla"; - return mediaHandler.getBigIconName(); + return mediaHandler.getBigIconName(); } public String getSmallIcon() { - if (mediaHandler == null) - return "bla"; - return mediaHandler.getTinyIconName(); + return mediaHandler.getTinyIconName(); } - public String getMediaType() { - return ""; + public String getDescription() { + return mediaHandler.getDescr(mediaType); } } - protected class MediaToMediaInfoField implements EntityAdapterDefinition.CalculatedField { + protected static class MediaToMediaInfoField implements EntityAdapterDefinition.CalculatedField { public Object getValue(EntityAdapter anEntityAdapter) { try { - MediaHandler mediaHandler = MediaHelper.getHandler(((EntityUploadedMedia) anEntityAdapter.getEntity()).getMediaType()); + MediaHandler mediaHandler = + MediaHelper.getHandler(((EntityUploadedMedia) anEntityAdapter.getEntity()).getMediaType()); - return new MediaInfo(mediaHandler); + return new MediaInfo(mediaHandler, + ((EntityUploadedMedia) anEntityAdapter.getEntity()).getMediaType()); } catch (Throwable t) { - throw new RuntimeException(t.getMessage()); + throw new Failure(t.getMessage(), t); } } } - protected class MediaToBigIconField implements EntityAdapterDefinition.CalculatedField { + protected static class MediaToBigIconField implements EntityAdapterDefinition.CalculatedField { public Object getValue(EntityAdapter anEntityAdapter) { try { return MediaHelper.getHandler(((EntityUploadedMedia) anEntityAdapter.getEntity()).getMediaType()).getBigIconName(); @@ -449,7 +461,7 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { } } - protected class ContentToCommentsField implements EntityAdapterDefinition.CalculatedField { + protected static class ContentToCommentsField implements EntityAdapterDefinition.CalculatedField { private String extracondition; private String order; @@ -475,7 +487,7 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { } } - protected class ContentToTopicsField implements EntityAdapterDefinition.CalculatedField { + protected static class ContentToTopicsField implements EntityAdapterDefinition.CalculatedField { private String topicCondition; private String topicOrder; @@ -494,13 +506,12 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { public Object getValue(EntityAdapter anEntityAdapter) { try { - - String condition = "cxt.content_id="+anEntityAdapter.get("id")+ " and cxt.topic_id=t.id"; - if (topicCondition!=null && topicCondition.length()>0) + if (topicCondition!=null && topicCondition.length()>0) { condition = "(" + topicCondition + ") and " + condition; + } return anEntityAdapter.getComplexRelation("t", Collections.singletonList("content_x_topic cxt"), condition, topicOrder, "topic" ); @@ -511,7 +522,7 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { } } - protected class ContentToMediaField implements EntityAdapterDefinition.CalculatedField { + protected static class ContentToMediaField implements EntityAdapterDefinition.CalculatedField { private String definition; private boolean published; @@ -544,7 +555,7 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { } } - protected class ContentToFirstMediaField implements EntityAdapterDefinition.CalculatedField { + protected static class ContentToFirstMediaField implements EntityAdapterDefinition.CalculatedField { private String definition; private boolean published; @@ -575,7 +586,7 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { } } - protected class CommentToMediaField implements EntityAdapterDefinition.CalculatedField { + protected static class CommentToMediaField implements EntityAdapterDefinition.CalculatedField { private String definition; private boolean published; @@ -606,38 +617,41 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { } } - protected class ContentToIconField implements EntityAdapterDefinition.CalculatedField { + protected static class ContentToIconField implements EntityAdapterDefinition.CalculatedField { public Object getValue(EntityAdapter anEntityAdapter) { - EntityAdapter media; - Entity mediaType; - Iterator iterator; - Map result; - MediaHandler mediaHandler; String tinyIcon; String iconAlt; try { - iterator = anEntityAdapter.getIterator("to_uploaded_media"); - tinyIcon = MirGlobal.config().getString("Producer.Icon.TinyText"); iconAlt = "Text"; + Iterator iterator = anEntityAdapter.getIterator("to_media_video"); + if (!iterator.hasNext()) { + iterator = anEntityAdapter.getIterator("to_media_audio"); + } + if (!iterator.hasNext()) { + iterator = anEntityAdapter.getIterator("to_media_images"); + } + if (!iterator.hasNext()) { + iterator = anEntityAdapter.getIterator("to_media_other"); + } + if (iterator.hasNext()) { - media = (EntityAdapter) iterator.next(); + EntityAdapter media = (EntityAdapter) iterator.next(); - mediaType = ((EntityUploadedMedia) (media.getEntity())).getMediaType(); - mediaHandler = MediaHelper.getHandler( mediaType ); + Entity mediaType = ((EntityUploadedMedia) (media.getEntity())).getMediaType(); + MediaHandler mediaHandler = MediaHelper.getHandler(mediaType); tinyIcon = mediaHandler.getTinyIconName(); iconAlt = mediaHandler.getIconAltName(); } } catch (Throwable t) { - logger.error("ContentToIconField: " +t.getMessage()); - throw new RuntimeException(t.getMessage()); + throw new Failure(t.getMessage(), t); } - result = new HashMap(); + Map result = new HashMap(); result.put("tiny_icon", MirGlobal.config().getString("Producer.ImageRoot") + "/" + tinyIcon); result.put("icon_alt", iconAlt); @@ -645,12 +659,10 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { } } - protected class ContentCommentCountField implements EntityAdapterDefinition.CalculatedField { + protected static class ContentCommentCountField implements EntityAdapterDefinition.CalculatedField { private String extraCondition; public ContentCommentCountField(String anExtraCondition) { - super(); - extraCondition = anExtraCondition; } @@ -666,7 +678,7 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { } } - protected class HumanReadableSizeField implements EntityAdapterDefinition.CalculatedField { + protected static class HumanReadableSizeField implements EntityAdapterDefinition.CalculatedField { private String fieldName; public HumanReadableSizeField(String aFieldName) { @@ -676,9 +688,10 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { public Object getValue(EntityAdapter anEntityAdapter) { try { String size = (String) anEntityAdapter.get(fieldName); - if (size!=null) + if (size!=null) { return NumberUtils.humanReadableSize(Double.parseDouble(size)); - return ""; + } + return ""; } catch (Throwable t) { throw new RuntimeException(t.getMessage()); @@ -755,7 +768,7 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { try { if (anEntityAdapter.get("parent")!=null) return anEntityAdapter.get("parent"); - return anEntityAdapter; + return anEntityAdapter; } catch (Throwable t) { throw new MirLocalizerFailure(t); @@ -848,5 +861,32 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { } } } + + protected static class CommentStatusCountField implements EntityAdapterDefinition.CalculatedField { + public Object getValue(EntityAdapter anEntityAdapter) { + return new CommentStatusCountField2(anEntityAdapter); + } + } + + public static class CommentStatusCountField2 { + private final EntityAdapter comment; + private final ModuleCommentStatus mcs = new ModuleCommentStatus(); + + CommentStatusCountField2(EntityAdapter anEntityAdapter) { + comment = anEntityAdapter; + } + + public String get(String aCommentStatus) { + try { + return Integer.toString( + DatabaseComment.getInstance().getSize( + "to_media=" + comment.get("id") + " and is_published='1' and to_comment_status = " + + mcs.commentStatusIdForName(aCommentStatus))); + } + catch (Exception e) { + return "0"; + } + } + } }