import mir.entity.adapter.EntityAdapterDefinition;\r
import mir.entity.adapter.EntityAdapterModel;\r
import mir.log.LoggerWrapper;\r
-import mircoders.media.MediaHelper;\r
-import mir.misc.NumberUtils;\r
import mir.media.MediaHandler;\r
+import mir.misc.NumberUtils;\r
import mir.util.ParameterExpander;\r
import mir.util.RewindableIterator;\r
import mir.util.StructuredContentParser;\r
import mircoders.localizer.MirDataModelLocalizer;\r
import mircoders.localizer.MirLocalizerExc;\r
import mircoders.localizer.MirLocalizerFailure;\r
+import mircoders.media.MediaHelper;\r
+import mircoders.module.ModuleContent;\r
import mircoders.storage.DatabaseArticleType;\r
import mircoders.storage.DatabaseAudio;\r
import mircoders.storage.DatabaseBreaking;\r
anEntityAdapterDefinition.addDBDateField("creationdate", "webdb_create", configuration.getString("Mir.DefaultTimezone"));\r
anEntityAdapterDefinition.addDBDateField("changedate", "webdb_lastchange", configuration.getString("Mir.DefaultTimezone"));\r
anEntityAdapterDefinition.addMirDateField("date", "date", configuration.getString("Mir.DefaultTimezone"));\r
+\r
+ anEntityAdapterDefinition.addCalculatedField("lockinguser", new ContentToUserField("to_locking_user"));\r
+ anEntityAdapterDefinition.addCalculatedField("is_locked", new ContentToIsLockedField());\r
+\r
anEntityAdapterDefinition.addCalculatedField("to_topics", new ContentToTopicsField());\r
anEntityAdapterDefinition.addCalculatedField("to_comments", new ContentToCommentsField());\r
anEntityAdapterDefinition.addCalculatedField("language", new ContentToLanguageField());\r
result.addMapping( "language", DatabaseLanguage.getInstance(), new EntityAdapterDefinition());\r
result.addMapping( "mediaType", DatabaseMediaType.getInstance(), new EntityAdapterDefinition());\r
result.addMapping( "topic", DatabaseTopics.getInstance(), new EntityAdapterDefinition());\r
- result.addMapping( "user", DatabaseUsers.getInstance(), new EntityAdapterDefinition());\r
+\r
+ definition = new EntityAdapterDefinition();\r
+ definition.addDBDateField("creationdate", "webdb_create", configuration.getString("Mir.DefaultTimezone"));\r
+ definition.addDBDateField("lastlogindate", "lastlogin", configuration.getString("Mir.DefaultTimezone"));\r
+ definition.addCalculatedField("structuredProfile", new StructuredContentField("profile"));\r
+ result.addMapping( "user", DatabaseUsers.getInstance(), definition);\r
+\r
result.addMapping( "otherMedia", DatabaseOther.getInstance(), new EntityAdapterDefinition());\r
\r
result.addMapping( "content_x_topic", DatabaseContentToTopics.getInstance(), new EntityAdapterDefinition());\r
protected class ContentToParentField implements EntityAdapterDefinition.CalculatedField {\r
public Object getValue(EntityAdapter anEntityAdapter) {\r
try {\r
- logger.debug("ContentToParentField.getValue");\r
+ logger.debug("ContentToParentField.getFieldValue");\r
return anEntityAdapter.getToOneRelation(\r
"id="+anEntityAdapter.get("to_content"),\r
"id",\r
}\r
}\r
}\r
-}\r
\r
+ protected class ContentToUserField implements EntityAdapterDefinition.CalculatedField {\r
+ private String fieldName;\r
\r
-/*\r
- public String getValue(String key) {\r
- String returnValue = null;\r
-\r
- if (key != null) {\r
- if (key.equals("big_icon"))\r
- returnValue = getBigIconName();\r
- else if (key.equals("descr") || key.equals("media_descr"))\r
- returnValue = getDescr();\r
- else if (key.equals("mediatype"))\r
- returnValue = getMediaTypeString();\r
- else if (key.equals("mimetype"))\r
- returnValue = getMimeType();\r
- else\r
- returnValue = super.getValue(key);\r
+ public ContentToUserField(String aFieldName) {\r
+ fieldName = aFieldName;\r
}\r
- return returnValue;\r
- }\r
-\r
- // @todo all these methods should be merged into 1\r
- // and the MediaHandler should be cached somehow.\r
- private String getMediaTypeString() {\r
- if (this instanceof EntityImages)\r
- return "image";\r
- if (this instanceof EntityAudio)\r
- return "audio";\r
- if (this instanceof EntityVideo)\r
- return "video";\r
- else\r
- return "other";\r
- }\r
-\r
-private String getBigIconName() {\r
- MediaHandler mediaHandler = null;\r
- Entity mediaType = null;\r
-\r
- try {\r
- mediaType = getMediaType();\r
- mediaHandler = MediaHelper.getHandler(mediaType);\r
- return mediaHandler.getBigIconName();\r
- }\r
- catch (Exception ex) {\r
- logger.warn("EntityUploadedMedia.getBigIconName: could not fetch data: " + ex.toString());\r
- }\r
- return null;\r
-}\r
\r
-private List getUrl() {\r
- MediaHandler mediaHandler = null;\r
- Entity mediaType = null;\r
-\r
- try {\r
- mediaType = getMediaType();\r
- mediaHandler = MediaHelper.getHandler(mediaType);\r
- return mediaHandler.getURL(this, mediaType);\r
- }\r
- catch (Throwable t) {\r
- logger.warn("EntityUploadedMedia.getUrl: could not fetch data: " + t.toString());\r
+ public Object getValue(EntityAdapter anEntityAdapter) {\r
+ try {\r
+ return anEntityAdapter.getToOneRelation(\r
+ "id=" + anEntityAdapter.get(fieldName),\r
+ "id",\r
+ "user");\r
+ }\r
+ catch (Throwable t) {\r
+ throw new RuntimeException(t.getMessage());\r
+ }\r
+ }\r
}\r
- return null;\r
-}\r
\r
-private String getDescr() {\r
- MediaHandler mediaHandler = null;\r
- Entity mediaType = null;\r
+ protected class ContentToIsLockedField implements EntityAdapterDefinition.CalculatedField {\r
+ private ModuleContent contentModule;\r
\r
- try {\r
- mediaType = getMediaType();\r
- mediaHandler = MediaHelper.getHandler(mediaType);\r
- return mediaHandler.getDescr(mediaType);\r
- }\r
- catch (Exception ex) {\r
- logger.warn("EntityUploadedMedia.getDescr: could not fetch data: " + ex.toString());\r
- }\r
- return null;\r
-}\r
-private String getMimeType() {\r
- Entity mediaType = null;\r
+ public ContentToIsLockedField() {\r
+ contentModule = new ModuleContent(DatabaseContent.getInstance());\r
+ }\r
\r
- try {\r
- mediaType = getMediaType();\r
- return mediaType.getValue("mime_type");\r
- }\r
- catch (Exception ex) {\r
- logger.warn("EntityUploadedMedia.getBigIconName: could not fetch data: " + ex.toString());\r
+ public Object getValue(EntityAdapter anEntityAdapter) {\r
+ try {\r
+ return new Boolean(contentModule.queryArticleLock(anEntityAdapter.getEntity().getId())!=null);\r
+ }\r
+ catch (Throwable t) {\r
+ throw new RuntimeException(t.getMessage());\r
+ }\r
+ }\r
}\r
- return null;\r
}\r
-*/
\ No newline at end of file