import mircoders.storage.DatabaseComment;
import mircoders.storage.DatabaseCommentStatus;
import mircoders.storage.DatabaseContent;
+import mircoders.storage.DatabaseContentToMedia;
import mircoders.storage.DatabaseContentToTopics;
import mircoders.storage.DatabaseImageType;
import mircoders.storage.DatabaseImages;
import mircoders.storage.DatabaseLanguage;
-import mircoders.storage.DatabaseMedia;
import mircoders.storage.DatabaseMediaType;
import mircoders.storage.DatabaseMediafolder;
import mircoders.storage.DatabaseMessages;
result.addMapping( "breakingNews", DatabaseBreaking.getInstance(), definition);
definition = new EntityAdapterDefinition();
+ definition.addDBDateField("creationdate", "webdb_create", configuration.getString("Mir.DefaultTimezone"));
+ result.addMapping( "internalMessage", DatabaseMessages.getInstance(), definition);
+
+ definition = new EntityAdapterDefinition();
definition.addCalculatedField("mediafolder", new MediaToMediaFolderField());
result.addMapping( "uploadedMedia", DatabaseUploadedMedia.getInstance(), definition);
definition = new EntityAdapterDefinition();
result.addMapping( "imageType", DatabaseImageType.getInstance(), new EntityAdapterDefinition());
result.addMapping( "language", DatabaseLanguage.getInstance(), new EntityAdapterDefinition());
result.addMapping( "mediaType", DatabaseMediaType.getInstance(), new EntityAdapterDefinition());
- result.addMapping( "internalMessage", DatabaseMessages.getInstance(), new EntityAdapterDefinition());
result.addMapping( "topic", DatabaseTopics.getInstance(), new EntityAdapterDefinition());
result.addMapping( "user", DatabaseUsers.getInstance(), new EntityAdapterDefinition());
- result.addMapping( "media", DatabaseMedia.getInstance(), new EntityAdapterDefinition());
result.addMapping( "otherMedia", DatabaseOther.getInstance(), new EntityAdapterDefinition());
result.addMapping( "content_x_topic", DatabaseContentToTopics.getInstance(), new EntityAdapterDefinition());
protected class ContentToTopicsField implements EntityAdapterDefinition.CalculatedField {
private String topicCondition;
+ private String topicOrder;
public ContentToTopicsField() {
this(null);
}
public ContentToTopicsField(String aTopicCondition) {
+ this(aTopicCondition, "title");
+ }
+
+ public ContentToTopicsField(String aTopicCondition, String aTopicOrder) {
topicCondition = aTopicCondition;
+ topicOrder = aTopicOrder;
}
+ // TODO rewrite as relational select
public Object getValue(EntityAdapter anEntityAdapter) {
try {
String condition = "exists (select * from content_x_topic where content_id="+anEntityAdapter.get("id")+" and topic_id=id)";
return anEntityAdapter.getRelation(
condition,
- "title",
+ topicOrder,
"topic" );
}
catch (Throwable t) {
public Object getValue(EntityAdapter anEntityAdapter) {
try {
+ // TODO rewrite as relational select
String condition = "exists (select * from content_x_media where content_id="+anEntityAdapter.get("id")+" and media_id=id)";
if (published)
condition = "is_published='t' and " + condition;
public Object getValue(EntityAdapter anEntityAdapter) {
try {
+ // TODO rewrite as relational select
String condition = "exists (select * from comment_x_media where comment_id="+anEntityAdapter.get("id")+" and media_id=id)";
if (published)
condition = "is_published='t' and " + condition;
}
}
}
+
+ protected class ContentMediaCountField implements EntityAdapterDefinition.CalculatedField {
+ private String table;
+ private boolean published;
+
+ public ContentMediaCountField(String aTable, boolean anOnlyPublished) {
+ table = aTable;
+ published = anOnlyPublished;
+ }
+
+ public ContentMediaCountField(String aTable) {
+ this(aTable, true);
+ }
+
+ public Object getValue(EntityAdapter anEntityAdapter) {
+ try {
+ String subQuery = "select * from "+table+" where id = media_id";
+ if (published)
+ subQuery = subQuery + " and is_published='t'";
+
+ return Integer.toString(
+ DatabaseContentToMedia.getInstance().getSize(
+ "exists ("+subQuery+")"));
+ }
+ catch (Throwable t) {
+ throw new RuntimeException(t.getMessage());
+ }
+ }
+ }
}