HTMLTemplateProcessor.process(res, startTemplate, mergeData, out, getLocale(req));
}
catch (Exception e) {
+ e.printStackTrace(System.out);
handleError(req, res, out, "error while trying to send startpage. " + e.toString());
}
}
package mir.entity;\r
\r
+import java.util.*;\r
+import mir.util.*;\r
import mir.storage.*;\r
import mir.entity.*;\r
\r
-public class EntityBrowser {\r
+public class EntityBrowser implements RewindableIterator {\r
\r
private StorageObject storage;\r
private String whereClause;\r
rewind();\r
}\r
\r
- private void rewind() throws StorageObjectException {\r
- currentBatch = storage.selectByWhereClause(whereClause, orderByClause,\r
- 0, batchSize);\r
-\r
- position=0;\r
+ public void rewind() {\r
+ try {\r
+ currentBatch = storage.selectByWhereClause(whereClause, orderByClause, 0, batchSize);\r
+ position=0;\r
+ }\r
+ catch (Throwable t) {\r
+ throw new RuntimeException(t.getMessage());\r
+ }\r
}\r
\r
private void readNextBatch() throws StorageObjectException {\r
}\r
}\r
\r
- public boolean hasNext() throws StorageObjectException {\r
- if (position>=currentBatch.size() && currentBatch.hasNextBatch()) {\r
- readNextBatch();\r
- }\r
+ public boolean hasNext() {\r
+ try {\r
+ if (position>=currentBatch.size() && currentBatch.hasNextBatch()) {\r
+ readNextBatch();\r
+ }\r
\r
- return (position<currentBatch.size());\r
+ return (position<currentBatch.size());\r
+ }\r
+ catch (Throwable t) {\r
+ throw new RuntimeException(t.getMessage());\r
+ }\r
}\r
\r
- public Entity next() throws StorageObjectException {\r
- if (hasNext()) {\r
- Entity result = currentBatch.elementAt(position);\r
- position=position+1;\r
+ public Object next() {\r
+ try {\r
+ if (hasNext()) {\r
+ Entity result = currentBatch.elementAt(position);\r
+ position=position+1;\r
\r
- return result;\r
+ return result;\r
+ }\r
+ else {\r
+ return null;\r
+ }\r
}\r
- else {\r
- return null;\r
+ catch (Throwable t) {\r
+ throw new RuntimeException(t.getMessage());\r
}\r
}\r
+\r
+ public void remove() {\r
+ throw new UnsupportedOperationException();\r
+ }\r
}
\ No newline at end of file
--- /dev/null
+package mir.entity.adapter;
+
+import java.util.*;
+import mir.entity.*;
+
+public class EntityAdapter implements Map {
+ private Entity entity;
+ private EntityAdapterDefinition definition;
+ private Map calculatedFieldsCache;
+
+ public EntityAdapter(Entity anEntity, EntityAdapterDefinition aDefinition) {
+ entity = anEntity;
+ definition = aDefinition;
+ calculatedFieldsCache = new HashMap();
+ }
+
+ public boolean containsKey(Object aKey) {
+ if (aKey instanceof String)
+ return entity.hasValueForField((String) aKey)
+ || definition.hasCalculatedField((String) aKey);
+ else
+ return false;
+ }
+
+ public boolean equals(Object anObject) {
+ return anObject instanceof EntityAdapter
+ && ((EntityAdapter) anObject).entity.equals(entity);
+ }
+
+ public int hashCode() {
+ return entity.hashCode();
+ }
+
+ protected Entity getEntity() {
+ return entity;
+ }
+
+ public Object get(Object aKey) {
+ Object result;
+
+ if (calculatedFieldsCache.containsKey(aKey)) {
+ return calculatedFieldsCache.get(aKey);
+ }
+ else if (aKey instanceof String && definition.hasCalculatedField((String) aKey)) {
+ result = definition.getCalculatedField((String) aKey).getValue(this);
+ calculatedFieldsCache.put(aKey, result);
+
+ return result;
+ }
+ else if (aKey instanceof String) {
+ return entity.getValue((String) aKey);
+ }
+ else {
+ return null;
+ }
+ }
+
+ public boolean isEmpty() {
+ throw new UnsupportedOperationException("EntityAdapter.isEmpty()");
+ }
+
+ public Set keySet() {
+ throw new UnsupportedOperationException("EntityAdapter.keySet()");
+ }
+
+ public Object put(Object aKey, Object value) {
+ throw new UnsupportedOperationException("EntityAdapter.put()");
+ }
+
+ public void putAll(Map t) {
+ throw new UnsupportedOperationException("EntityAdapter.putAll()");
+ }
+
+ public Object remove(Object aKey) {
+ throw new UnsupportedOperationException("EntityAdapter.remove()");
+ }
+
+ public int size() {
+ throw new UnsupportedOperationException("EntityAdapter.size()");
+ }
+
+ public Collection values() {
+ throw new UnsupportedOperationException("EntityAdapter.values()");
+ }
+
+ public void clear() {
+ throw new UnsupportedOperationException("EntityAdapter.clear()");
+ }
+
+ public boolean containsValue(Object value) {
+ throw new UnsupportedOperationException("EntityAdapter.containsValue()");
+ }
+
+ public Set entrySet() {
+ throw new UnsupportedOperationException("EntityAdapter.entrySet()");
+ }
+}
\ No newline at end of file
--- /dev/null
+package mir.entity.adapter;
+
+import java.util.*;
+import mir.entity.*;
+import mir.storage.*;
+
+public class EntityAdapterDefinition {
+ Map calculatedFields;
+
+ public EntityAdapterDefinition() {
+ calculatedFields = new HashMap();
+ }
+
+ public EntityAdapter makeEntityAdapter(Entity anEntity) {
+ return new EntityAdapter(anEntity, this);
+ }
+
+ public CalculatedField getCalculatedField(String aFieldName) {
+ return (CalculatedField) calculatedFields.get(aFieldName);
+ }
+
+ public boolean hasCalculatedField(String aFieldName) {
+ return calculatedFields.containsKey(aFieldName);
+ }
+
+ public void addCalculatedField(String aFieldName, CalculatedField aField) {
+ calculatedFields.put(aFieldName, aField);
+ }
+
+ public void addDateField(String aDestinationFieldName, String aSourceFieldName) {
+ addCalculatedField(aDestinationFieldName, new DateField(aSourceFieldName));
+ }
+
+ public interface CalculatedField {
+ public Object getValue(EntityAdapter anEntityAdapter);
+ }
+
+ private class DateField implements CalculatedField {
+ private String fieldName;
+
+ public DateField(String aFieldName) {
+ fieldName = aFieldName;
+ }
+
+ public Object getValue(EntityAdapter anEntityAdapter) {
+ Map result = new HashMap();
+ String textValue = anEntityAdapter.getEntity().getValue(fieldName);
+ Calendar calendar = GregorianCalendar.getInstance();
+ int year;
+ int month;
+ int day;
+ Date date;
+
+ if (textValue!=null) {
+ try {
+ year = Integer.parseInt(textValue.substring(0,4));
+ month = Integer.parseInt(textValue.substring(4,6));
+ day = Integer.parseInt(textValue.substring(6,8));
+
+ calendar.set(year, month, day);
+ date = calendar.getTime();
+
+ result.put("date", date);
+ result.put("year", textValue.substring(0,4));
+ result.put("month", textValue.substring(4,6));
+ result.put("day", textValue.substring(6,8));
+ }
+ catch (Throwable t) {
+ result.put("date", null);
+ result.put("year", null);
+ result.put("month", null);
+ result.put("day", null);
+ }
+ }
+
+ return result;
+ }
+ }
+
+ static protected Object getRelation(StorageObject aStorageObject, String aWhereClause, String anOrderByClause, EntityAdapterDefinition aDefinition) {
+ try {
+ return
+ new EntityIteratorAdapter(
+ new EntityBrowser( aStorageObject, aWhereClause, anOrderByClause, -1),
+ aDefinition);
+ }
+ catch (Throwable t) {
+ throw new RuntimeException(t.getMessage());
+ }
+ }
+}
--- /dev/null
+package mir.entity.adapter;
+
+import java.util.*;
+import mir.storage.*;
+import mir.util.*;
+import mir.entity.*;
+
+public class EntityIteratorAdapter implements RewindableIterator {
+ private EntityAdapterDefinition definition;
+ private RewindableIterator iterator;
+
+ public EntityIteratorAdapter(RewindableIterator anIterator, EntityAdapterDefinition aDefinition) {
+ iterator = anIterator;
+ definition = aDefinition;
+ }
+
+ public EntityIteratorAdapter(StorageObject aStorage, String aWhereClause, String anOrderByClause, int aBatchSize, EntityAdapterDefinition aDefinition) throws StorageObjectException {
+ this(new EntityBrowser(aStorage, aWhereClause, anOrderByClause, aBatchSize), aDefinition);
+ }
+
+ public boolean hasNext() {
+ return iterator.hasNext();
+ }
+
+ public Object next() {
+ return definition.makeEntityAdapter((Entity) iterator.next());
+ }
+
+ public void remove() {
+ iterator.remove();
+ }
+
+ public void rewind() {
+ iterator.rewind();
+ };
+}
\ No newline at end of file
--- /dev/null
+package mir.entity.adapter;
+
+import java.util.*;
+import mir.entity.*;
+
+public class EntityListAdapter extends AbstractList {
+ private int skip;
+ private int maximumLength;
+ private EntityBrowser browser;
+ private boolean exhausted = false;
+ private boolean skipped = false;
+
+ private List cache;
+
+ protected EntityListAdapter(EntityBrowser aBrowser, int aSkip, int aMaximumLength) {
+ browser = aBrowser;
+ skip = aSkip;
+ maximumLength = aMaximumLength;
+ cache = new Vector();
+ }
+
+ protected EntityListAdapter(EntityBrowser aBrowser, int aMaximumLength) {
+ this(aBrowser, 0, aMaximumLength);
+ }
+
+ protected EntityListAdapter(EntityBrowser aBrowser) {
+ this(aBrowser, 0, -1);
+ }
+
+ private void skip() {
+ int i;
+
+ try {
+ if (!skipped) {
+ for(i=0; i<skip; i++)
+ if (browser.hasNext())
+ browser.next();
+ }
+ skipped=true;
+ }
+ catch (Throwable t) {
+ throw new RuntimeException(t.getMessage());
+ }
+ }
+
+ private void fetchNext() {
+ try {
+ if (!exhausted) {
+ if (browser.hasNext())
+ cache.add(browser.next());
+
+ exhausted = !browser.hasNext() || (maximumLength>0 && cache.size()>=maximumLength) ;
+ }
+ }
+ catch (Throwable t) {
+ throw new RuntimeException(t.getMessage());
+ }
+
+ }
+
+ private void exhaust() {
+ skip();
+
+ while (!exhausted)
+ fetchNext();
+ }
+
+ private void fetchUntil(int anIndex) {
+ skip();
+
+ while (!exhausted && anIndex>=cache.size())
+ fetchNext();
+ }
+
+ public int size() {
+ exhaust();
+
+ return cache.size();
+ }
+
+ public Object get(int anIndex) {
+ fetchUntil(anIndex);
+ return cache.get(anIndex);
+ }
+}
\ No newline at end of file
package mir.generator;
-import freemarker.template.*;
-import mir.entity.*;
import java.util.*;
import java.io.*;
+import freemarker.template.*;
+import mir.entity.*;
+import mir.util.*;
public class FreemarkerGenerator implements Generator {
private Template template;
return new MapAdapter(aMap);
}
- private static TemplateListModel makeListAdapter(List aList) {
- return new ListAdapter(aList);
+ private static TemplateListModel makeIteratorAdapter(Iterator anIterator) {
+ return new IteratorAdapter(anIterator);
}
- private static TemplateModel makeAdapter(Object anObject) {
+ private static TemplateModel makeAdapter(Object anObject) throws TemplateModelException {
if (anObject == null)
return null;
if (anObject instanceof TemplateModel)
return makeStringAdapter((String) anObject);
else if (anObject instanceof Map)
return makeMapAdapter((Map) anObject);
- else if (anObject instanceof List)
- return makeListAdapter((List) anObject);
+ else if (anObject instanceof Iterator)
+ return makeIteratorAdapter((Iterator) anObject);
else
- return null;
+ throw new TemplateModelException("Unadaptable class: " + anObject.getClass().getName());
}
private static class MapAdapter implements TemplateModelRoot {
}
}
+ private static class IteratorAdapter implements TemplateListModel {
+ Iterator iterator;
+ List valuesCache;
+ int position;
+
+ private IteratorAdapter(Iterator anIterator) {
+ iterator = anIterator;
+
+ valuesCache = new Vector();
+ position=0;
+
+
+ if (iterator instanceof RewindableIterator) {
+ ((RewindableIterator) iterator).rewind();
+ }
+ }
+
+ public boolean isEmpty() {
+ return valuesCache.isEmpty() && !iterator.hasNext();
+ }
+
+ private void getUntil(int anIndex) throws TemplateModelException {
+ while (valuesCache.size()<=anIndex && iterator.hasNext())
+ {
+ valuesCache.add(makeAdapter(iterator.next()));
+ }
+ };
+
+ public TemplateModel get(int anIndex) throws TemplateModelException {
+ TemplateModel result;
+
+ getUntil(anIndex);
+
+ if (anIndex<valuesCache.size())
+ {
+ result = (TemplateModel) valuesCache.get(anIndex);
+
+ return result;
+ }
+ else
+ throw new TemplateModelException( "Iterator out of bounds" );
+ }
+
+ public boolean hasNext() {
+ return position<valuesCache.size() || iterator.hasNext();
+ }
+
+ public boolean isRewound() {
+ return position==0;
+ }
+
+ public TemplateModel next() throws TemplateModelException {
+ TemplateModel result;
+
+ if (hasNext()) {
+ result = get(position);
+ position++;
+ }
+ else
+ throw new TemplateModelException( "Iterator out of bounds" );
+
+ return result;
+ }
+
+ public void rewind() {
+ position=0;
+ }
+ }
+
private static class ListAdapter implements TemplateListModel {
List list;
List valuesCache;
return list.isEmpty();
}
- public TemplateModel get(int i) {
+ public TemplateModel get(int i) throws TemplateModelException {
if (i>=valuesCache.size() && i<list.size()) {
for(int j=valuesCache.size(); j<=i; j++) {
if (i<valuesCache.size())
return (TemplateModel) valuesCache.get(i);
else
- return null;
+ throw new TemplateModelException( "Iterator out of bounds" );
}
public boolean hasNext() {
return position==0;
}
- public TemplateModel next() {
- TemplateModel result = null;
+ public TemplateModel next() throws TemplateModelException {
+ TemplateModel result;
if (hasNext()) {
result = get(position);
position++;
}
+ else
+ throw new TemplateModelException( "Iterator out of bounds" );
return result;
}
--- /dev/null
+package mir.producer;
+
+import java.util.*;
+import java.io.*;
+
+public class CompositeProducerNode implements ProducerNode {
+ private List subNodes;
+
+ public CompositeProducerNode() {
+ subNodes = new Vector();
+ }
+
+ public CompositeProducerNode(ProducerNode[] aSubNodes) {
+ this();
+
+ int i;
+
+ for (i=0; i<aSubNodes.length; i++) {
+ addSubNode(aSubNodes[i]);
+ }
+ }
+
+ public void addSubNode(ProducerNode aSubNode) {
+ subNodes.add(aSubNode);
+ }
+
+ public void produce(Map aValueSet, String aVerb, PrintWriter aLogger) throws ProducerFailure {
+ Iterator i = subNodes.iterator();
+
+ while (i.hasNext())
+ ((ProducerNode) i.next()).produce(aValueSet, aVerb, aLogger);
+ }
+
+ public Set buildVerbSet() {
+ Iterator i = subNodes.iterator();
+ Set result = new HashSet();
+
+ while (i.hasNext())
+ result.addAll(((ProducerNode) i.next()).buildVerbSet());
+
+ return result;
+ }
+}
\ No newline at end of file
--- /dev/null
+package mir.producer;
+
+import java.util.*;
+import java.io.*;
+import mir.entity.adapter.*;
+import mir.entity.*;
+import mir.storage.*;
+import mir.util.*;
+
+public class EntityEnumeratingProducerNode extends ProducerNodeDecorator {
+ private Map verbs;
+ private EntityEnumeratingProducerNodeVerb defaultVerb;
+ private String key;
+ private EntityAdapterDefinition definition;
+ private StorageObject storage;
+
+ public EntityEnumeratingProducerNode(String aKey, StorageObject aStorage, EntityAdapterDefinition aDefinition, ProducerNode aSubNode) {
+ super(aSubNode);
+
+ defaultVerb = null;
+ verbs = new HashMap();
+ storage = aStorage;
+ definition = aDefinition;
+ key = aKey;
+ }
+
+ public EntityEnumeratingProducerNode(String aKey, StorageObject aStorage, EntityAdapterDefinition aDefinition,
+ String aDefaultWhereClause, String aDefaultOrderByClause, ProducerNode aSubNode) {
+ this(aKey, aStorage, aDefinition, aSubNode);
+
+ defaultVerb = new EntityEnumeratingProducerNodeVerb(aDefaultWhereClause, aDefaultOrderByClause);
+ }
+
+ public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure {
+ EntityEnumeratingProducerNodeVerb verb = (EntityEnumeratingProducerNodeVerb) verbs.get(aVerb);
+ Iterator browser;
+
+ if (verb==null)
+ verb = defaultVerb;
+
+ if (verb==null)
+ throw new ProducerFailure("EntityEnumeratingProducerNode: unknown verb '"+aVerb+"'", null);
+
+ try {
+ browser = new EntityIteratorAdapter(
+ storage,
+ ParameterExpander.expandExpression( aValueMap, verb.whereClause ),
+ ParameterExpander.expandExpression( aValueMap, verb.orderByClause ),
+ -1,
+ definition );
+
+ while (browser.hasNext()) {
+ aLogger.println( verb.whereClause + ": next... ");
+ aValueMap.put(key, browser.next());
+ super.produce(aValueMap, aVerb, aLogger);
+ }
+ }
+ catch (Throwable t) {
+ throw new ProducerFailure(t.getMessage(), t);
+ }
+ };
+
+ public Set buildVerbSet() {
+ Set set;
+
+ set = super.buildVerbSet();
+ set.addAll(verbs.keySet());
+
+ return set;
+ };
+
+ public void addVerb(String aVerb, String aWhereClause, String anOrderByClause) {
+ verbs.put(aVerb, new EntityEnumeratingProducerNodeVerb(aWhereClause, anOrderByClause));
+ }
+
+ private class EntityEnumeratingProducerNodeVerb {
+ StorageObject database;
+
+ String whereClause;
+ String orderByClause;
+
+ EntityEnumeratingProducerNodeVerb(String aWhereClause, String anOrderByClause) {
+ whereClause = aWhereClause;
+ orderByClause = anOrderByClause;
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+package mir.producer;
+
+import java.util.*;
+import java.io.*;
+import mir.entity.adapter.*;
+import mir.entity.*;
+import mir.storage.*;
+import mir.util.*;
+
+public class EntityListProducerNode extends ProducerNodeDecorator {
+ private String key;
+ private String whereClause;
+ private String orderByClause;
+ private int batchSize;
+ private EntityAdapterDefinition definition;
+ private StorageObject storage;
+
+ public EntityListProducerNode(String aKey, StorageObject aStorage,
+ EntityAdapterDefinition aDefinition, String aWhereClause, String anOrderByClause,
+ int aBatchSize, ProducerNode aSubNode) {
+ super(aSubNode);
+
+ storage = aStorage;
+ definition = aDefinition;
+ key = aKey;
+ whereClause = aWhereClause;
+ orderByClause = anOrderByClause;
+ batchSize = aBatchSize;
+ }
+
+ public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure {
+ try {
+ aValueMap.put(key,
+ new EntityIteratorAdapter(
+ storage,
+ ParameterExpander.expandExpression( aValueMap, whereClause ),
+ ParameterExpander.expandExpression( aValueMap, orderByClause ),
+ batchSize,
+ definition )
+ );
+ super.produce(aValueMap, aVerb, aLogger);
+ }
+ catch (Throwable t) {
+ throw new ProducerFailure(t.getMessage(), t);
+ }
+ };
+
+}
\ No newline at end of file
--- /dev/null
+package mir.producer;
+
+import java.util.*;
+import java.io.*;
+
+public class NodedProducer implements Producer {
+ ProducerNode rootNode;
+ String verb;
+ Map baseValues;
+
+ public NodedProducer( ProducerNode aRootNode, String aVerb, Map aBaseValues) {
+ rootNode = aRootNode;
+ verb = aVerb;
+ baseValues = aBaseValues;
+ }
+
+ public void produce( PrintWriter aLogger ) throws ProducerFailure {
+ Map valueMap;
+
+ valueMap = new HashMap();
+ valueMap.putAll(baseValues);
+
+ rootNode.produce(valueMap, verb, aLogger);
+ };
+}
--- /dev/null
+package mir.producer;
+
+import java.util.*;
+import java.io.*;
+
+public interface ProducerNode {
+ public void produce(Map aValueSet, String aVerb, PrintWriter aLogger);
+ public Set buildVerbSet();
+}
\ No newline at end of file
--- /dev/null
+package mir.producer;
+
+import java.util.*;
+import java.io.*;
+
+public class ProducerNodeDecorator implements ProducerNode {
+ private ProducerNode slave;
+
+ protected ProducerNodeDecorator(ProducerNode aSlave) {
+ slave = aSlave;
+ }
+
+ public void produce(Map aValueSet, String aVerb, PrintWriter aLogger) throws ProducerFailure {
+ slave.produce(aValueSet, aVerb, aLogger);
+ }
+
+ public Set buildVerbSet() {
+ return slave.buildVerbSet();
+ }
+}
\ No newline at end of file
--- /dev/null
+package mir.producer;
+
+import java.util.*;
+import java.io.*;
+import org.apache.struts.util.MessageResources;
+import mir.util.*;
+
+public class ResourceBundleProducerNode extends ProducerNodeDecorator {
+ private String key;
+ private String bundleIdentifier;
+
+ public ResourceBundleProducerNode(String aKey, String aBundleIdentifier, ProducerNode aSubNode) {
+ super(aSubNode);
+
+ bundleIdentifier = aBundleIdentifier;
+ key = aKey;
+ }
+
+ public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure {
+ try {
+ aValueMap.put(
+ key,
+ MessageResources.getMessageResources(
+ ParameterExpander.expandExpression( aValueMap, bundleIdentifier ))
+ );
+
+ super.produce(aValueMap, aVerb, aLogger);
+ }
+ catch (Throwable t) {
+ throw new ProducerFailure(t.getMessage(), t);
+ }
+ };
+
+}
\ No newline at end of file
--- /dev/null
+package mir.producer;
+
+import java.util.*;
+import java.io.*;
+import org.apache.struts.util.MessageResources;
+import mir.util.*;
+
+public class ValuesMapProducerNode extends ProducerNodeDecorator {
+ private String key;
+ private String bundleIdentifier;
+ private Map map;
+
+ public ValuesMapProducerNode(Map aMap, ProducerNode aSubNode) {
+ super(aSubNode);
+ }
+
+ public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure {
+ try {
+ aValueMap.putAll(map);
+
+ super.produce(aValueMap, aVerb, aLogger);
+ }
+ catch (Throwable t) {
+ throw new ProducerFailure(t.getMessage(), t);
+ }
+ };
+
+}
\ No newline at end of file
--- /dev/null
+package mir.util;
+
+import java.util.*;
+
+public interface RewindableIterator extends Iterator {
+ public void rewind();
+}
\ No newline at end of file
--- /dev/null
+package mircoders.entity.adapter;
+
+import mir.entity.*;
+import mir.entity.adapter.*;
+import mircoders.storage.*;
+
+public class AudioAdapterDefinition extends EntityAdapterDefinition {
+ private static AudioAdapterDefinition instance;
+
+ public static AudioAdapterDefinition getInstance() {
+ synchronized (AudioAdapterDefinition.class) {
+ if (instance == null) {
+ instance = new AudioAdapterDefinition();
+ }
+ return instance;
+ }
+ }
+
+ public AudioAdapterDefinition() {
+ super();
+ }
+}
--- /dev/null
+package mircoders.entity.adapter;
+
+import mir.entity.*;
+import mir.entity.adapter.*;
+import mircoders.storage.*;
+
+public class BreakingAdapterDefinition extends EntityAdapterDefinition {
+ private static BreakingAdapterDefinition instance;
+
+ public static BreakingAdapterDefinition getInstance() {
+ synchronized (BreakingAdapterDefinition.class) {
+ if (instance == null) {
+ instance = new BreakingAdapterDefinition();
+ }
+ return instance;
+ }
+ }
+
+ public BreakingAdapterDefinition() {
+ super();
+ }
+}
--- /dev/null
+package mircoders.entity.adapter;
+
+import mir.entity.*;
+import mir.entity.adapter.*;
+import mircoders.storage.*;
+
+public class CommentAdapterDefinition extends EntityAdapterDefinition {
+ private static CommentAdapterDefinition instance;
+
+ public static CommentAdapterDefinition getInstance() {
+ synchronized (CommentAdapterDefinition.class) {
+ if (instance == null) {
+ instance = new CommentAdapterDefinition();
+ }
+ return instance;
+ }
+ }
+
+ public CommentAdapterDefinition() {
+ super();
+ }
+}
+
+
+// String mirconf_extLinkName = MirConfig.getProp("Producer.ExtLinkName");
+// String mirconf_intLinkName = MirConfig.getProp("Producer.IntLinkName");
+// String mirconf_mailLinkName = MirConfig.getProp("Producer.MailLinkName");
+// String mirconf_imageRoot = MirConfig.getProp("Producer.ImageRoot");
+
+
+// if (field.equals("date_formatted"))
+// {
+// if (hasValueForField("date"))
+// returnField = StringUtil.webdbDate2readableDate(getValue("date"));
+// }
+// else if (field.equals("description_parsed"))
+// returnField = getDescriptionParsed();
+// else if (field.equals("description_sentence"))
+// returnField = getDescriptionSentence();
+// else if (field.equals("content_data_parsed"))
+// returnField = getContentDataParsed();
+
+
+// if (key.equals("to_comments")) {
+// try {
+// _entCache.put(key, getComments());
+// return (TemplateModel)_entCache.get(key);
+// } catch (Exception ex) {
+// theLog.printWarning("-- getComments: could not fetch data " + ex.toString());
+// throw new TemplateModelException(ex.toString());
+// }
+// }
+// if (key.equals("to_media_images")) {
+// try {
+// _entCache.put(key, getImagesForContent());
+// return (TemplateModel)_entCache.get(key);
+// }
+// catch (Exception ex) {
+// theLog.printWarning("-- getImagesForContent: could not fetch data " + ex.toString());
+// throw new TemplateModelException(ex.toString());
+// }
+// }
+// if (key.equals("to_media_audio")) {
+// try {
+//// _entCache.put(key, getAudioForContent());
+// return (TemplateModel)_entCache.get(key);
+// }
+// catch (Exception ex) {
+// theLog.printWarning("-- getAudioForContent: could not fetch data " + ex.toString());
+// throw new TemplateModelException(ex.toString());
+// }
+// }
+// if (key.equals("to_media_video")) {
+// try {
+// _entCache.put(key, getVideoForContent());
+/* return (TemplateModel)_entCache.get(key);
+ }
+ catch (Exception ex) {
+ theLog.printWarning("-- getVideoForContent: could not fetch data " + ex.toString());
+ throw new TemplateModelException(ex.toString());
+ }
+ }
+ if (key.equals("to_media_other")) {
+ try {
+ _entCache.put(key, getOtherMediaForContent());
+ return (TemplateModel)_entCache.get(key);
+ }
+ catch (Exception ex) {
+ theLog.printWarning("-- getOtherMediaForContent: could not fetch data " + ex.toString());
+ throw new TemplateModelException(ex.toString());
+ }
+ }
+ else if (key.equals("to_media_icon")) {
+ try {
+ _entCache.put(key, getUploadedMediaForNewswire());
+ return (TemplateModel)_entCache.get(key);
+ }
+ catch (Exception ex) {
+ theLog.printWarning("-- getUploadedMediaForNewswire: could not fetch data " + ex.toString());
+ throw new TemplateModelException(ex.toString());
+ }
+ }
+ else if (key.equals("to_topics")) {
+ try {
+ _entCache.put(key,
+ DatabaseContentToTopics.getInstance().getTopics(this));
+ return (TemplateModel)_entCache.get(key);
+ }
+ catch (Exception ex) {
+ theLog.printWarning("-- getTopics: could not fetch data " + ex.toString());
+ throw new TemplateModelException(ex.toString());
+ }
+ }
+*/
+
+
+
+
+/*
+ private String getContentDataParsed() {
+ String returnField = getValue("content_data");
+ if (returnField!=null & returnField.length()>0 ) {
+ returnField=StringUtil.deleteForbiddenTags(returnField);
+ //create http-links and email-links
+ if (getValue("is_html").equals("0")) {
+ returnField = StringUtil.createHTML(returnField,mirconf_imageRoot,
+ mirconf_mailLinkName,mirconf_extLinkName,
+ mirconf_intLinkName);
+ }
+ returnField = StringUtil.decodeHTMLinTags(returnField);
+ }
+ return returnField;
+ }
+
+ private String getDescriptionSentence() {
+ String returnField = getValue("description");
+ if (returnField != null && returnField.length()>0) {
+ returnField = StringUtil.removeHTMLTags(returnField);
+ int endOfFirstSentence=StringUtil.findEndOfSentence(returnField,0);
+ if (endOfFirstSentence > 0){
+ returnField = returnField.substring(0,endOfFirstSentence);
+ }
+ }
+ return returnField;
+ }
+
+ private String getDescriptionParsed() {
+ String returnField = getValue("description");
+ if (returnField != null && returnField.length()>0) {
+ returnField = StringUtil.deleteForbiddenTags(returnField);
+ if (getValue("is_html").equals("0")) {
+ returnField = StringUtil.createHTML(returnField,mirconf_imageRoot,
+ mirconf_mailLinkName,mirconf_extLinkName,
+ mirconf_intLinkName);
+ }
+ returnField = StringUtil.decodeHTMLinTags(returnField);
+ }
+ return returnField;
+ }
+
+
+ private EntityList getComments() throws StorageObjectException {
+ return ((DatabaseContent)theStorageObject).getComments(this);
+ }
+
+ // @todo this needs to optimized. expensive SQL
+ private SimpleHash getUploadedMediaForNewswire()
+ throws StorageObjectException, TemplateModelException
+ {
+ // fetching/setting the images
+ // return to_media_icons
+ String tinyIcon = null, iconAlt = null;
+ MirMedia mediaHandler = null;
+ EntityUploadedMedia uploadedMedia;
+ Entity mediaType;
+ SimpleHash returnHash = new SimpleHash();
+
+ EntityList upMediaEntityList =
+ DatabaseContentToMedia.getInstance().getUploadedMedia(this);
+ if (upMediaEntityList!=null && upMediaEntityList.getCount()>=1) {
+
+ for (int n=0; n < upMediaEntityList.size();n++) {
+ uploadedMedia = (EntityUploadedMedia)upMediaEntityList.elementAt(n);
+ mediaType = uploadedMedia.getMediaType();
+ try {
+ mediaHandler = MediaHelper.getHandler( mediaType );
+ } catch (MirMediaException ex) {
+ throw new TemplateModelException(ex.toString());
+ }
+ //the "best" media type to show
+ if (mediaHandler.isVideo()) {
+ tinyIcon = MirConfig.getProp("Producer.Icon.TinyVideo");
+ iconAlt = "Video";
+ break;
+ } else if (mediaHandler.isAudio()) {
+ tinyIcon = MirConfig.getProp("Producer.Icon.TinyAudio");
+ iconAlt = "Audio";
+ } else if (tinyIcon == null && !mediaHandler.isImage()) {
+ tinyIcon = mediaHandler.getTinyIcon();
+ iconAlt = mediaHandler.getIconAlt();
+ }
+
+ }
+ //it only has image(s)
+ if (tinyIcon == null) {
+ tinyIcon = MirConfig.getProp("Producer.Icon.TinyImage");
+ iconAlt = "Image";
+ }
+ // uploadedMedia Entity list is empty.
+ // we only have text
+ } else {
+ tinyIcon = MirConfig.getProp("Producer.Icon.TinyText");
+ iconAlt = "Text";
+ }
+ returnHash.put("tiny_icon", mirconf_imageRoot+"/"+tinyIcon);
+ returnHash.put("icon_alt", iconAlt);
+ return returnHash;
+ }
+
+ private boolean hasMedia() throws StorageObjectException
+ {
+ if (_hasMedia == null) {
+ _hasMedia =
+ new Boolean(DatabaseContentToMedia.getInstance().hasMedia(this));
+ }
+ return _hasMedia.booleanValue();
+ }
+
+ //######## @todo all of the following getBlahForContent should have
+ // and optimized version where LIMIT=1 sql for list view.
+ private EntityList getImagesForContent()
+ throws StorageObjectException, TemplateModelException
+ {
+ if (hasMedia())
+ return DatabaseContentToMedia.getInstance().getImages(this);
+ else
+ return null;
+ }
+
+ private EntityList getAudioForContent()
+ throws StorageObjectException, TemplateModelException
+ {
+ if (hasMedia())
+ return DatabaseContentToMedia.getInstance().getAudio(this) ;
+ else
+ return null;
+ }
+
+ private EntityList getVideoForContent()
+ throws StorageObjectException, TemplateModelException
+ {
+ if (hasMedia())
+ return DatabaseContentToMedia.getInstance().getVideo(this) ;
+ else
+ return null;
+ }
+
+ private EntityList getOtherMediaForContent()
+ throws StorageObjectException, TemplateModelException
+ {
+ if (hasMedia())
+ return DatabaseContentToMedia.getInstance().getOther(this);
+ else
+ return null;
+ }
+
+}
+*/
+
+
+
+
+
+
+
+
+
+
+
+
+// if (field.equals("date_formatted"))
+// {
+// if (hasValueForField("webdb_create"))
+// returnField = StringUtil.dateToReadableDate(getValue("webdb_create"));
+
+
+// else if (field.equals("description_parsed")) {
+// /** @todo the config stuff should be moved to StringUtil */
+// String extLinkName = MirConfig.getProp("Producer.ExtLinkName");
+// String intLinkName = MirConfig.getProp("Producer.IntLinkName");
+// String mailLinkName = MirConfig.getProp("Producer.MailLinkName");
+// String imageRoot = MirConfig.getProp("Producer.ImageRoot");
+// returnField = StringUtil.createHTML(getValue("description"),imageRoot,mailLinkName,extLinkName,intLinkName);
--- /dev/null
+package mircoders.entity.adapter;
+
+import mir.entity.*;
+import mir.entity.adapter.*;
+import mircoders.storage.*;
+import mircoders.global.*;
+import mircoders.localizer.*;
+
+public class ContentAdapterDefinition extends EntityAdapterDefinition {
+ private static ContentAdapterDefinition instance;
+
+ public static ContentAdapterDefinition getInstance() {
+ synchronized (ContentAdapterDefinition.class) {
+ if (instance == null) {
+ instance = new ContentAdapterDefinition();
+ }
+ return instance;
+ }
+ }
+
+ public ContentAdapterDefinition() {
+ super();
+
+ addDateField("date", "date");
+ addCalculatedField("to_topics", new ContentToTopicsField());
+ addCalculatedField("to_comments", new ContentToCommentsField());
+ addCalculatedField("description_parsed", new FilteredField("description"));
+ addCalculatedField("content_data_parsed", new FilteredField("content_data"));
+// else if (field.equals(""))
+// returnField = getDescriptionParsed();
+// else if (field.equals("description_sentence"))
+// returnField = getDescriptionSentence();
+// else if (field.equals("content_data_parsed"))
+// returnField = getContentDataParsed();
+ }
+
+ private class FilteredField implements CalculatedField {
+ String fieldName;
+
+ public FilteredField(String aFieldName) {
+ fieldName = aFieldName;
+ }
+
+ public Object getValue(EntityAdapter anEntityAdapter) {
+ if (anEntityAdapter.get("is_html").equals("0")) {
+ return MirGlobal.localizer().producerTool().filterText((String) anEntityAdapter.get(fieldName));
+ }
+ else {
+ return anEntityAdapter.get(fieldName);
+ }
+ }
+ }
+
+ private class ContentToCommentsField implements CalculatedField {
+ public Object getValue(EntityAdapter anEntityAdapter) {
+ try {
+ return getRelation(
+ DatabaseComment.getInstance(),
+ "to_media="+anEntityAdapter.get("id"),
+ "title",
+ CommentAdapterDefinition.getInstance());
+ }
+ catch (Throwable t) {
+ throw new RuntimeException(t.getMessage());
+ }
+ }
+ }
+
+ private class ContentToTopicsField implements CalculatedField {
+ public Object getValue(EntityAdapter anEntityAdapter) {
+ try {
+ return getRelation(
+ DatabaseTopics.getInstance(),
+ "exists (select * from content_x_topic where content_id="+anEntityAdapter.get("id")+" and topic_id=id)",
+ "title",
+ TopicsAdapterDefinition.getInstance());
+ }
+ catch (Throwable t) {
+ throw new RuntimeException(t.getMessage());
+ }
+ }
+ }
+}
+
+
+// String mirconf_extLinkName = MirConfig.getProp("Producer.ExtLinkName");
+// String mirconf_intLinkName = MirConfig.getProp("Producer.IntLinkName");
+// String mirconf_mailLinkName = MirConfig.getProp("Producer.MailLinkName");
+// String mirconf_imageRoot = MirConfig.getProp("Producer.ImageRoot");
+
+
+// if (field.equals("date_formatted"))
+// {
+// if (hasValueForField("date"))
+// returnField = StringUtil.webdbDate2readableDate(getValue("date"));
+// }
+// else if (field.equals("description_parsed"))
+// returnField = getDescriptionParsed();
+// else if (field.equals("description_sentence"))
+// returnField = getDescriptionSentence();
+// else if (field.equals("content_data_parsed"))
+// returnField = getContentDataParsed();
+
+
+// if (key.equals("to_media_images")) {
+// try {
+// _entCache.put(key, getImagesForContent());
+// return (TemplateModel)_entCache.get(key);
+// }
+// catch (Exception ex) {
+// theLog.printWarning("-- getImagesForContent: could not fetch data " + ex.toString());
+// throw new TemplateModelException(ex.toString());
+// }
+// }
+// if (key.equals("to_media_audio")) {
+// try {
+//// _entCache.put(key, getAudioForContent());
+// return (TemplateModel)_entCache.get(key);
+// }
+// catch (Exception ex) {
+// theLog.printWarning("-- getAudioForContent: could not fetch data " + ex.toString());
+// throw new TemplateModelException(ex.toString());
+// }
+// }
+// if (key.equals("to_media_video")) {
+// try {
+// _entCache.put(key, getVideoForContent());
+/* return (TemplateModel)_entCache.get(key);
+ }
+ catch (Exception ex) {
+ theLog.printWarning("-- getVideoForContent: could not fetch data " + ex.toString());
+ throw new TemplateModelException(ex.toString());
+ }
+ }
+ if (key.equals("to_media_other")) {
+ try {
+ _entCache.put(key, getOtherMediaForContent());
+ return (TemplateModel)_entCache.get(key);
+ }
+ catch (Exception ex) {
+ theLog.printWarning("-- getOtherMediaForContent: could not fetch data " + ex.toString());
+ throw new TemplateModelException(ex.toString());
+ }
+ }
+ else if (key.equals("to_media_icon")) {
+ try {
+ _entCache.put(key, getUploadedMediaForNewswire());
+ return (TemplateModel)_entCache.get(key);
+ }
+ catch (Exception ex) {
+ theLog.printWarning("-- getUploadedMediaForNewswire: could not fetch data " + ex.toString());
+ throw new TemplateModelException(ex.toString());
+ }
+ }
+ else if (key.equals("to_topics")) {
+ try {
+ _entCache.put(key,
+ DatabaseContentToTopics.getInstance().getTopics(this));
+ return (TemplateModel)_entCache.get(key);
+ }
+ catch (Exception ex) {
+ theLog.printWarning("-- getTopics: could not fetch data " + ex.toString());
+ throw new TemplateModelException(ex.toString());
+ }
+ }
+*/
+
+
+
+
+/*
+ private String getContentDataParsed() {
+ String returnField = getValue("content_data");
+ if (returnField!=null & returnField.length()>0 ) {
+ returnField=StringUtil.deleteForbiddenTags(returnField);
+ //create http-links and email-links
+ if (getValue("is_html").equals("0")) {
+ returnField = StringUtil.createHTML(returnField,mirconf_imageRoot,
+ mirconf_mailLinkName,mirconf_extLinkName,
+ mirconf_intLinkName);
+ }
+ returnField = StringUtil.decodeHTMLinTags(returnField);
+ }
+ return returnField;
+ }
+
+ private String getDescriptionSentence() {
+ String returnField = getValue("description");
+ if (returnField != null && returnField.length()>0) {
+ returnField = StringUtil.removeHTMLTags(returnField);
+ int endOfFirstSentence=StringUtil.findEndOfSentence(returnField,0);
+ if (endOfFirstSentence > 0){
+ returnField = returnField.substring(0,endOfFirstSentence);
+ }
+ }
+ return returnField;
+ }
+
+ private String getDescriptionParsed() {
+ String returnField = getValue("description");
+ if (returnField != null && returnField.length()>0) {
+ returnField = StringUtil.deleteForbiddenTags(returnField);
+ if (getValue("is_html").equals("0")) {
+ returnField = StringUtil.createHTML(returnField,mirconf_imageRoot,
+ mirconf_mailLinkName,mirconf_extLinkName,
+ mirconf_intLinkName);
+ }
+ returnField = StringUtil.decodeHTMLinTags(returnField);
+ }
+ return returnField;
+ }
+
+
+ private EntityList getComments() throws StorageObjectException {
+ return ((DatabaseContent)theStorageObject).getComments(this);
+ }
+
+ // @todo this needs to optimized. expensive SQL
+ private SimpleHash getUploadedMediaForNewswire()
+ throws StorageObjectException, TemplateModelException
+ {
+ // fetching/setting the images
+ // return to_media_icons
+ String tinyIcon = null, iconAlt = null;
+ MirMedia mediaHandler = null;
+ EntityUploadedMedia uploadedMedia;
+ Entity mediaType;
+ SimpleHash returnHash = new SimpleHash();
+
+ EntityList upMediaEntityList =
+ DatabaseContentToMedia.getInstance().getUploadedMedia(this);
+ if (upMediaEntityList!=null && upMediaEntityList.getCount()>=1) {
+
+ for (int n=0; n < upMediaEntityList.size();n++) {
+ uploadedMedia = (EntityUploadedMedia)upMediaEntityList.elementAt(n);
+ mediaType = uploadedMedia.getMediaType();
+ try {
+ mediaHandler = MediaHelper.getHandler( mediaType );
+ } catch (MirMediaException ex) {
+ throw new TemplateModelException(ex.toString());
+ }
+ //the "best" media type to show
+ if (mediaHandler.isVideo()) {
+ tinyIcon = MirConfig.getProp("Producer.Icon.TinyVideo");
+ iconAlt = "Video";
+ break;
+ } else if (mediaHandler.isAudio()) {
+ tinyIcon = MirConfig.getProp("Producer.Icon.TinyAudio");
+ iconAlt = "Audio";
+ } else if (tinyIcon == null && !mediaHandler.isImage()) {
+ tinyIcon = mediaHandler.getTinyIcon();
+ iconAlt = mediaHandler.getIconAlt();
+ }
+
+ }
+ //it only has image(s)
+ if (tinyIcon == null) {
+ tinyIcon = MirConfig.getProp("Producer.Icon.TinyImage");
+ iconAlt = "Image";
+ }
+ // uploadedMedia Entity list is empty.
+ // we only have text
+ } else {
+ tinyIcon = MirConfig.getProp("Producer.Icon.TinyText");
+ iconAlt = "Text";
+ }
+ returnHash.put("tiny_icon", mirconf_imageRoot+"/"+tinyIcon);
+ returnHash.put("icon_alt", iconAlt);
+ return returnHash;
+ }
+
+ private boolean hasMedia() throws StorageObjectException
+ {
+ if (_hasMedia == null) {
+ _hasMedia =
+ new Boolean(DatabaseContentToMedia.getInstance().hasMedia(this));
+ }
+ return _hasMedia.booleanValue();
+ }
+
+ //######## @todo all of the following getBlahForContent should have
+ // and optimized version where LIMIT=1 sql for list view.
+ private EntityList getImagesForContent()
+ throws StorageObjectException, TemplateModelException
+ {
+ if (hasMedia())
+ return DatabaseContentToMedia.getInstance().getImages(this);
+ else
+ return null;
+ }
+
+ private EntityList getAudioForContent()
+ throws StorageObjectException, TemplateModelException
+ {
+ if (hasMedia())
+ return DatabaseContentToMedia.getInstance().getAudio(this) ;
+ else
+ return null;
+ }
+
+ private EntityList getVideoForContent()
+ throws StorageObjectException, TemplateModelException
+ {
+ if (hasMedia())
+ return DatabaseContentToMedia.getInstance().getVideo(this) ;
+ else
+ return null;
+ }
+
+ private EntityList getOtherMediaForContent()
+ throws StorageObjectException, TemplateModelException
+ {
+ if (hasMedia())
+ return DatabaseContentToMedia.getInstance().getOther(this);
+ else
+ return null;
+ }
+
+}
+*/
\ No newline at end of file
--- /dev/null
+package mircoders.entity.adapter;
+
+import mir.entity.*;
+import mir.entity.adapter.*;
+import mircoders.storage.*;
+
+public class FeatureAdapterDefinition extends EntityAdapterDefinition {
+ private static FeatureAdapterDefinition instance;
+
+ public static FeatureAdapterDefinition getInstance() {
+ synchronized (FeatureAdapterDefinition.class) {
+ if (instance == null) {
+ instance = new FeatureAdapterDefinition();
+ }
+ return instance;
+ }
+ }
+
+ public FeatureAdapterDefinition() {
+ super();
+ }
+}
--- /dev/null
+package mircoders.entity.adapter;
+
+import mir.entity.*;
+import mir.entity.adapter.*;
+import mircoders.storage.*;
+
+public class ImagesAdapterDefinition extends EntityAdapterDefinition {
+ private static ImagesAdapterDefinition instance;
+
+ public static ImagesAdapterDefinition getInstance() {
+ synchronized (ImagesAdapterDefinition.class) {
+ if (instance == null) {
+ instance = new ImagesAdapterDefinition();
+ }
+ return instance;
+ }
+ }
+
+ public ImagesAdapterDefinition() {
+ super();
+ }
+}
--- /dev/null
+package mircoders.entity.adapter;
+
+import mir.entity.*;
+import mir.entity.adapter.*;
+import mircoders.storage.*;
+
+public class LanguageAdapterDefinition extends EntityAdapterDefinition {
+ private static LanguageAdapterDefinition instance;
+
+ public static LanguageAdapterDefinition getInstance() {
+ synchronized (LanguageAdapterDefinition.class) {
+ if (instance == null) {
+ instance = new LanguageAdapterDefinition();
+ }
+ return instance;
+ }
+ }
+
+ public LanguageAdapterDefinition() {
+ super();
+ }
+}
--- /dev/null
+package mircoders.entity.adapter;
+
+import mir.entity.*;
+import mir.entity.adapter.*;
+import mircoders.storage.*;
+
+public class LinksImcsAdapterDefinition extends EntityAdapterDefinition {
+ private static LinksImcsAdapterDefinition instance;
+
+ public static LinksImcsAdapterDefinition getInstance() {
+ synchronized (LinksImcsAdapterDefinition.class) {
+ if (instance == null) {
+ instance = new LinksImcsAdapterDefinition();
+ }
+ return instance;
+ }
+ }
+
+ public LinksImcsAdapterDefinition() {
+ super();
+ }
+}
--- /dev/null
+package mircoders.entity.adapter;
+
+import mir.entity.*;
+import mir.entity.adapter.*;
+import mircoders.storage.*;
+
+public class MediaAdapterDefinition extends EntityAdapterDefinition {
+ private static MediaAdapterDefinition instance;
+
+ public static MediaAdapterDefinition getInstance() {
+ synchronized (MediaAdapterDefinition.class) {
+ if (instance == null) {
+ instance = new MediaAdapterDefinition();
+ }
+ return instance;
+ }
+ }
+
+ public MediaAdapterDefinition() {
+ super();
+ }
+}
--- /dev/null
+package mircoders.entity.adapter;
+
+import mir.entity.*;
+import mir.entity.adapter.*;
+import mircoders.storage.*;
+
+public class OtherAdapterDefinition extends EntityAdapterDefinition {
+ private static OtherAdapterDefinition instance;
+
+ public static OtherAdapterDefinition getInstance() {
+ synchronized (OtherAdapterDefinition.class) {
+ if (instance == null) {
+ instance = new OtherAdapterDefinition();
+ }
+ return instance;
+ }
+ }
+
+ public OtherAdapterDefinition() {
+ super();
+ }
+}
--- /dev/null
+package mircoders.entity.adapter;
+
+import mir.entity.*;
+import mir.entity.adapter.*;
+import mircoders.storage.*;
+
+public class TopicsAdapterDefinition extends EntityAdapterDefinition {
+ private static TopicsAdapterDefinition instance;
+
+ public static TopicsAdapterDefinition getInstance() {
+ synchronized (TopicsAdapterDefinition.class) {
+ if (instance == null) {
+ instance = new TopicsAdapterDefinition();
+ }
+ return instance;
+ }
+ }
+
+ public TopicsAdapterDefinition() {
+ super();
+ }
+}
--- /dev/null
+package mircoders.entity.adapter;
+
+import mir.entity.*;
+import mir.entity.adapter.*;
+import mircoders.storage.*;
+
+public class UploadedMediaAdapterDefinition extends EntityAdapterDefinition {
+ private static UploadedMediaAdapterDefinition instance;
+
+ public static UploadedMediaAdapterDefinition getInstance() {
+ synchronized (UploadedMediaAdapterDefinition.class) {
+ if (instance == null) {
+ instance = new UploadedMediaAdapterDefinition();
+ }
+ return instance;
+ }
+ }
+
+ public UploadedMediaAdapterDefinition() {
+ super();
+ }
+}
--- /dev/null
+package mircoders.entity.adapter;
+
+import mir.entity.*;
+import mir.entity.adapter.*;
+import mircoders.storage.*;
+
+public class UsersAdapterDefinition extends EntityAdapterDefinition {
+ private static UsersAdapterDefinition instance;
+
+ public static UsersAdapterDefinition getInstance() {
+ synchronized (UsersAdapterDefinition.class) {
+ if (instance == null) {
+ instance = new UsersAdapterDefinition();
+ }
+ return instance;
+ }
+ }
+
+ public UsersAdapterDefinition() {
+ super();
+ }
+}
--- /dev/null
+package mircoders.entity.adapter;
+
+import mir.entity.*;
+import mir.entity.adapter.*;
+import mircoders.storage.*;
+
+public class VideoAdapterDefinition extends EntityAdapterDefinition {
+ private static VideoAdapterDefinition instance;
+
+ public static VideoAdapterDefinition getInstance() {
+ synchronized (VideoAdapterDefinition.class) {
+ if (instance == null) {
+ instance = new VideoAdapterDefinition();
+ }
+ return instance;
+ }
+ }
+
+ public VideoAdapterDefinition() {
+ super();
+ }
+}
import mir.misc.*;
import mircoders.localizer.*;
-import mircoders.localizer.basic.*;
-
-
public class MirGlobal {
static private MirConfig configuration;
static private MirLocalizer localizer;
static private ProducerEngine producerEngine;
public static MirLocalizer localizer() {
+ String localizerClassName;
+ Class localizerClass;
+
if (localizer == null ) {
- localizer = new MirCachingLocalizerDecorator(new MirBasicLocalizer());
+ synchronized(MirGlobal.class) {
+ if (localizer == null ) {
+ localizerClassName = getConfigPropertyWithDefault("Mir.Localizer", "mirlocal.loaclizer.basic.MirBasicLocalizer");
+
+ try {
+ localizerClass = Class.forName(localizerClassName);
+ }
+ catch (Throwable t) {
+ throw new ConfigException("localizer class '" + localizerClassName + "' not found: " + t.toString());
+ }
+
+ if (!(MirLocalizer.class.isAssignableFrom(localizerClass)))
+ throw new ConfigException("localizer class '" + localizerClassName + "' is not assignable from MirLocalizer");
+
+ try {
+ localizer = new MirCachingLocalizerDecorator((MirLocalizer) localizerClass.newInstance());
+ }
+ catch (Throwable t) {
+ throw new ConfigException("localizer class '" + localizerClassName + "' cannot be instantiated: " + t.toString());
+ }
+ }
+ }
}
return localizer;
- };
+ }
public static MirConfig config() {
if (configuration == null) {
}
return configuration;
- };
+ }
public static ProducerEngine producerEngine() {
if (producerEngine == null) {
return producerEngine;
}
+ public static String getConfigPropertyWithDefault(String aPropertyName, String aDefault) {
+ String result;
+
+ result = config().getProp(aPropertyName);
+
+ if (result==null)
+ result = aDefault;
+
+ return result;
+ }
+
public static String getConfigProperty(String aPropertyName) {
String result;
public void initializeGenerationValueSet(Map aValueSet);
public PrintWriter openWriter(String anIdentifier) throws MirLocalizerFailure;
public void closeWriter(PrintWriter aWriter);
+ public String filterText(String aText);
}
MirGlobal.getConfigProperty("Producer.StorageRoot") + "/index.shtml",
MirGlobal.getConfigIntegerProperty("Producer.StartPage.Items"),
MirGlobal.getConfigIntegerProperty("Producer.StartPage.Newswire")));
-
-
- aStartPageFactory.addFactory(
- new TopicStartPageProducerFactory(
- MirGlobal.getConfigProperty("Producer.StartPage.Template"),
- "bundles.admin",
- MirGlobal.getConfigProperty("Producer.StorageRoot") + "/${filename}index.shtml",
- MirGlobal.getConfigIntegerProperty("Producer.StartPage.Items"),
- MirGlobal.getConfigIntegerProperty("Producer.StartPage.Newswire")));
}
protected void setupSynchronizationFactory(CompositeProducerFactory aSynchronizationFactory) {
Map configMap = new HashMap();
- configMap.put("producerDocRoot", MirGlobal.getConfigProperty("Producer.DocRoot"));
+ configMap.put("producerDocRoot", "");//MirGlobal.getConfigProperty("Producer.DocRoot"));
configMap.put("storageRoot", MirGlobal.getConfigProperty("Producer.StorageRoot"));
configMap.put("productionHost", MirGlobal.getConfigProperty("Producer.ProductionHost"));
configMap.put("openAction", MirGlobal.getConfigProperty("Producer.OpenAction"));
EntityList topicList=null;
EntityList entityList=null;
EntityList parentList=null;
+ EntityList languageList=null;
try {
ModuleLinksImcs linksImcsModule = new ModuleLinksImcs(DatabaseLinksImcs.getInstance());
ModuleTopics topicsModule = new ModuleTopics(DatabaseTopics.getInstance());
+ ModuleLanguage languageModule = new ModuleLanguage(DatabaseLanguage.getInstance());
topicList = topicsModule.getTopicsList();
entityList = linksImcsModule.getByWhereClause("", "sortpriority, title", -1);
parentList = linksImcsModule.getByWhereClause("to_parent_id=NULL", "sortpriority, title", -1);
-
+ languageList = languageModule.getByWhereClause("", "id", -1);
}
catch (Throwable t) {
System.out.println("initializeGenerationValueSet: Exception "+t.getMessage());
public void closeWriter(PrintWriter aWriter) {
aWriter.close();
};
+
+ public String filterText(String aText) {
+ return StringUtil.createHTML(
+ StringUtil.deleteForbiddenTags(aText),
+ MirGlobal.getConfigProperty("Producer.ImageRoot"),
+ MirGlobal.getConfigProperty("Producer.MailLinkName"),
+ MirGlobal.getConfigProperty("Producer.ExtLinkName"),
+ MirGlobal.getConfigProperty("Producer.IntLinkName")
+ );
+ }
}
import mircoders.localizer.*;
import mircoders.global.*;
import mircoders.entity.*;
+import mircoders.entity.adapter.*;
import org.apache.struts.util.MessageResources;
-// @todo ML: the file that gets generated should be better configurable
-
public class ContentProducer implements mir.producer.Producer {
private String generatorIdentifier;
while (browser.hasNext()) {
content = (EntityContent) browser.next();
- dataMap.put("content", content);
+ dataMap.put("content", ContentAdapterDefinition.getInstance().makeEntityAdapter(content));
String date = content.getValue("date");
--- /dev/null
+package mircoders.producer;
+
+import java.util.*;
+import java.io.*;
+import mir.util.*;
+import mir.producer.*;
+import mir.generator.*;
+import mircoders.global.*;
+import mircoders.localizer.*;
+
+public class GeneratingProducerNode implements ProducerNode {
+ private String generatorExpression;
+ private String destinationExpression;
+
+ public GeneratingProducerNode(String aGenerator, String aDestination) {
+ generatorExpression=aGenerator;
+ destinationExpression=aDestination;
+ }
+
+ public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure {
+ Generator generator;
+ PrintWriter printWriter;
+ String generatorIdentifier;
+ String destinationIdentifier;
+
+ try {
+ destinationIdentifier = ParameterExpander.expandExpression( aValueMap, destinationExpression );
+ generatorIdentifier = ParameterExpander.expandExpression( aValueMap, generatorExpression );
+
+ aLogger.println("Generating " + generatorIdentifier + " into " + destinationIdentifier);
+ printWriter = MirGlobal.localizer().producerTool().openWriter( destinationIdentifier );
+ generator = MirGlobal.localizer().generators().makeGenerator( generatorIdentifier );
+ generator.generate(printWriter, aValueMap, aLogger);
+ MirGlobal.localizer().producerTool().closeWriter( printWriter );
+ aLogger.println("Done generating");
+ }
+ catch (Throwable t) {
+ aLogger.println("Error while generating: " + t.getMessage());
+ t.printStackTrace(aLogger);
+
+ throw new ProducerFailure(t.getMessage(), t);
+ }
+
+ }
+
+ public Set buildVerbSet() {
+ return new HashSet();
+ }
+}
\ No newline at end of file
--- /dev/null
+package mircoders.producer;
+
+import java.util.*;
+import mir.producer.*;
+import mircoders.global.*;
+
+public class NodedProducerFactory implements ProducerFactory {
+ private ProducerNode rootNode;
+
+ public NodedProducerFactory(ProducerNode aRootNode) {
+ rootNode = aRootNode;
+ }
+
+ public mir.producer.Producer makeProducer(String aVerb) throws ProducerFailure {
+ Map baseValues;
+
+ baseValues = new HashMap();
+
+ MirGlobal.localizer().producerTool().initializeGenerationValueSet(baseValues);
+
+ return new NodedProducer(rootNode, aVerb, baseValues);
+ };
+
+ public Iterator verbs() {
+ Set verbSet = rootNode.buildVerbSet();
+
+ if (verbSet.isEmpty()) {
+ verbSet = new HashSet();
+
+ verbSet.add("(default)");
+ }
+
+ return verbSet.iterator();
+ };
+}
+
outputFile = anOutputFile;
}
-
public mir.producer.Producer makeProducer(String aVerb) throws ProducerFailure {
try {
return new StaticProducer( generatorIdentifier, resourceBundle, outputFile );
import mircoders.storage.*;
import mircoders.module.*;
import mircoders.entity.*;
+import mircoders.global.*;
+import mircoders.localizer.*;
public class TopicStartPageProducerFactory implements ProducerFactory {
CompositeProducer result = new CompositeProducer();
Map values = new HashMap();
+
try {
+ MirGlobal.localizer().producerTool().initializeGenerationValueSet(values);
+
ModuleContent contentModule = new ModuleContent(DatabaseContent.getInstance());
ModuleTopics topicsModule = new ModuleTopics(DatabaseTopics.getInstance());
ModuleBreaking breakingModule = new ModuleBreaking(DatabaseBreaking.getInstance());
values.put("archiv_url", topic.getValue("archiv_url"));
- // ML: ok, this is way to low-level for this place:
+
+ // ML: ok, this is way too low-level for this place:
String orderBy = "webdb_create desc";
String topicSelection = "exists (select * from content_x_topic where content_id=content.id and topic_id='"+topic.getValue("id")+"')";
String featureWhereClause = "is_published='1' and to_article_type='2' and "+topicSelection;
--- /dev/null
+package mirlocal.bolivia.indymedia.org;
+
+import mircoders.localizer.*;
+import mircoders.global.*;
+import mircoders.localizer.basic.*;
+
+public class BoliviaLocalizer extends MirBasicLocalizer {
+
+ public MirProducerLocalizer producers() {
+ return new BoliviaProducerLocalizer();
+ }
+
+ public MirOpenPostingLocalizer openPostings() {
+ return new BoliviaOpenPostingLocalizer();
+ }
+
+ public MirProducerToolLocalizer producerTool() {
+ return new BoliviaProducerToolLocalizer();
+ }
+
+}
\ No newline at end of file
--- /dev/null
+package mirlocal.bolivia.indymedia.org;
+
+import mircoders.localizer.*;
+import mircoders.global.*;
+import mircoders.localizer.basic.*;
+
+public class BoliviaOpenPostingLocalizer extends MirBasicOpenPostingLocalizer {
+
+ public void afterContentPosting() {
+ super.afterContentPosting();
+ }
+
+ public void afterCommentPosting() {
+ super.afterCommentPosting();
+ }
+}
--- /dev/null
+package mirlocal.bolivia.indymedia.org;
+
+import java.util.*;
+import mir.producer.*;
+import mircoders.global.*;
+import mircoders.localizer.*;
+import mircoders.localizer.basic.*;
+import mircoders.producer.*;
+import mircoders.storage.*;
+import mircoders.entity.adapter.*;
+
+public class BoliviaProducerLocalizer extends MirBasicProducerLocalizer {
+
+ protected void setupContentFactory(CompositeProducerFactory aContentFactory) {
+
+ EntityEnumeratingProducerNode contentNode = null;
+
+ try {
+ contentNode =
+ new EntityEnumeratingProducerNode( "content", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
+ new CompositeProducerNode( new ProducerNode[] {
+ new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
+ new ResourceBundleProducerNode("lang", "producer_${language.code}",
+ new GeneratingProducerNode(
+ "/producer/bolivia.indymedia.org/article.template",
+ "${config.storageRoot}/${language.code}/articles/${content.date.year}/${content.date.month}/${content.id}.shtml"
+ )
+ )
+ )
+ } )
+ );
+ }
+ catch (Throwable t) {
+ }
+
+ contentNode.addVerb( "all", "is_published='1'", "" );
+ contentNode.addVerb( "all", "is_published='1' and is_produced='f'", "" );
+
+ aContentFactory.addFactory( new NodedProducerFactory( contentNode ) );
+
+
+// public EntityEnumeratingProducerNode(String aKey, StorageObject aStorage, EntityAdapterDefinition aDefinition, ProducerNode aSubNode) {
+
+// aContentFactory.addFactory(
+// new ContentProducerFactory(
+// "producer/content.template",
+// "bundles.admin",
+// MirGlobal.getConfigProperty("Producer.StorageRoot") + "/content/${contentyear}/${contentmonth}/${contentid}.inc",
+// Integer.parseInt(MirGlobal.getConfigProperty("Producer.Content.Batchsize"))));
+
+// aContentFactory.addFactory(
+// new ContentProducerFactory(
+// "producer/article.template",
+// "bundles.admin",
+// MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/${contentyear}/${contentmonth}/${contentid}.shtml",
+// Integer.parseInt(MirGlobal.getConfigProperty("Producer.Content.Batchsize"))));
+ }
+
+ protected void setupStartPageFactory(CompositeProducerFactory aStartPageFactory) {
+ ProducerNode startPageNode = null;
+
+ try {
+ startPageNode =
+ new EntityListProducerNode("features", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
+ "is_published='1' and to_article_type = 2", "date desc, webdb_create desc", 10,
+ new EntityListProducerNode("newswire", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
+ "is_published='1' and to_article_type = 1", "date desc, webdb_create desc", 10,
+ new EntityListProducerNode("breaking", DatabaseBreaking.getInstance(), BreakingAdapterDefinition.getInstance(),
+ "", "webdb_create desc", 5,
+ new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
+ "", "code", 10,
+ new CompositeProducerNode( new ProducerNode[] {
+ new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
+ new ResourceBundleProducerNode("lang", "producer_${language.code}",
+ new GeneratingProducerNode(
+ "/producer/bolivia.indymedia.org/startpage.template",
+ "${config.storageRoot}/${language.code}/index.shtml"
+ )
+ )
+ )
+ } )
+ )
+ )
+ )
+ );
+ }
+ catch (Throwable t) {
+ }
+
+ aStartPageFactory.addFactory( new NodedProducerFactory( startPageNode ) );
+
+
+/*
+ aStartPageFactory.addFactory(
+ new TopicStartPageProducerFactory(
+ "producer/citystart.template",
+ "bundles.admin",
+ MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/start${filename}.shtml",
+ MirGlobal.getConfigIntegerProperty("Producer.StartPage.Items"),
+ 0));
+
+ aStartPageFactory.addFactory(
+ new TopicStartPageProducerFactory(
+ "producer/newswire.template",
+ "bundles.admin",
+ MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/newswire${filename}.inc",
+ 0,
+ MirGlobal.getConfigIntegerProperty("Producer.StartPage.Newswire")));
+
+ aStartPageFactory.addFactory(
+ new StartPageProducerFactory(
+ "producer/start.template",
+ "bundles.admin",
+ MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/start.shtml",
+ MirGlobal.getConfigIntegerProperty("Producer.StartPage.Items"),
+ 0));
+
+ aStartPageFactory.addFactory(
+ new StartPageProducerFactory(
+ "producer/newswire.template",
+ "bundles.admin",
+ MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/newswire.inc",
+ 0,
+ MirGlobal.getConfigIntegerProperty("Producer.StartPage.Newswire")));
+
+*/
+ }
+
+ protected void setupStaticFactory(CompositeProducerFactory aStaticFactory) {
+ aStaticFactory.addFactory(
+ new StaticProducerFactory(
+ "producer/nav.template",
+ "bundles.admin",
+ MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/nav.inc"));
+
+ aStaticFactory.addFactory(
+ new StaticProducerFactory(
+ "producer/top.template",
+ "bundles.admin",
+ MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/top.inc"));
+
+ aStaticFactory.addFactory(
+ new StaticProducerFactory(
+ "producer/bottom.template",
+ "bundles.admin",
+ MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/bottom.inc"));
+
+ aStaticFactory.addFactory(
+ new StaticProducerFactory(
+ "producer/style.template",
+ "bundles.admin",
+ MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/style.css"));
+
+ aStaticFactory.addFactory(
+ new StaticProducerFactory(
+ "producer/articlepre.template",
+ "bundles.admin",
+ MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/articlepre.shtml"));
+
+ aStaticFactory.addFactory(
+ new StaticProducerFactory(
+ "producer/articlepost.template",
+ "bundles.admin",
+ MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/articlepost.shtml"));
+ }
+
+}
--- /dev/null
+package mirlocal.bolivia.indymedia.org;
+
+import java.util.*;
+import java.io.*;
+import freemarker.template.utility.*;
+import mir.misc.*;
+import mir.entity.*;
+import mircoders.module.*;
+import mircoders.storage.*;
+import mircoders.localizer.*;
+import mircoders.localizer.basic.*;
+import mircoders.global.*;
+
+public class BoliviaProducerToolLocalizer extends MirBasicProducerToolLocalizer {
+
+ public void initializeGenerationValueSet(Map aValueSet) {
+ super.initializeGenerationValueSet(aValueSet);
+
+ EntityList topicList=null;
+ EntityList cityList=null;
+
+
+ try {
+ ModuleTopics topicsModule = new ModuleTopics(DatabaseTopics.getInstance());
+
+ cityList = topicsModule.getByWhereClause("main_url<>'c'", "title", -1);
+ topicList = topicsModule.getByWhereClause("main_url<>'c'", "title", -1);
+ }
+ catch (Throwable t) {
+ throw new RuntimeException("initializeGenerationValueSet: Exception "+t.getMessage());
+ }
+
+ aValueSet.put("topics", topicList);
+ aValueSet.put("cities", topicList);
+ }
+}
--- /dev/null
+package mirlocal.indymedia.nl;
+
+import mircoders.localizer.*;
+import mircoders.global.*;
+import mircoders.localizer.basic.*;
+
+public class IndyNLLocalizer extends MirBasicLocalizer {
+
+ public MirProducerLocalizer producers() {
+ return new IndyNLProducerLocalizer();
+ }
+
+ public MirOpenPostingLocalizer openPostings() {
+ return new IndyNLOpenPostingLocalizer();
+ }
+
+ public MirProducerToolLocalizer producerTool() {
+ return new MirBasicProducerToolLocalizer();
+ }
+
+}
\ No newline at end of file
--- /dev/null
+package mirlocal.indymedia.nl;
+
+import mircoders.localizer.*;
+import mircoders.global.*;
+import mircoders.localizer.basic.*;
+
+public class IndyNLOpenPostingLocalizer extends MirBasicOpenPostingLocalizer {
+
+ public void afterContentPosting() {
+ super.afterContentPosting();
+ }
+
+ public void afterCommentPosting() {
+ MirGlobal.producerEngine().addJob("startpage", "all");
+ super.afterCommentPosting();
+ }
+}
--- /dev/null
+package mirlocal.indymedia.nl;
+
+import java.util.*;
+import mir.producer.*;
+import mircoders.global.*;
+import mircoders.localizer.*;
+import mircoders.localizer.basic.*;
+import mircoders.producer.*;
+import mircoders.storage.*;
+import mircoders.entity.adapter.*;
+
+public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer {
+
+ protected void setupContentFactory(CompositeProducerFactory aContentFactory) {
+ EntityEnumeratingProducerNode contentNode = null;
+
+ try {
+ contentNode =
+ new EntityEnumeratingProducerNode( "content", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
+ new CompositeProducerNode( new ProducerNode[] {
+ new GeneratingProducerNode(
+ "/producer/indymedia.nl/content.template",
+ "${config.storageRoot}/content/${content.date.year}/${content.date.month}/${content.id}.inc"
+ ),
+ new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
+ new ResourceBundleProducerNode("lang", "producer_${language.code}",
+ new GeneratingProducerNode(
+ "/producer/indymedia.nl/article.template",
+ "${config.storageRoot}/${language.code}/${content.date.year}/${content.date.month}/${content.id}.shtml"
+ )
+ )
+ )
+ } )
+ );
+ }
+ catch (Throwable t) {
+ }
+
+ contentNode.addVerb( "all", "is_published='1'", "" );
+ contentNode.addVerb( "all", "is_published='1' and is_produced='f'", "" );
+
+ aContentFactory.addFactory( new NodedProducerFactory( contentNode ) );
+
+
+/*
+ aContentFactory.addFactory(
+ new ContentProducerFactory(
+ "producer/content.template",
+ "bundles.admin",
+ MirGlobal.getConfigProperty("Producer.StorageRoot") + "/content/${contentyear}/${contentmonth}/${contentid}.inc",
+ Integer.parseInt(MirGlobal.getConfigProperty("Producer.Content.Batchsize"))));
+
+ aContentFactory.addFactory(
+ new ContentProducerFactory(
+ "producer/article.template",
+ "bundles.admin",
+ MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/${contentyear}/${contentmonth}/${contentid}.shtml",
+ Integer.parseInt(MirGlobal.getConfigProperty("Producer.Content.Batchsize"))));
+ */
+ }
+
+ protected void setupStartPageFactory(CompositeProducerFactory aStartPageFactory) {
+ ProducerNode startPageNode = null;
+
+ try {
+ startPageNode =
+ new EntityListProducerNode("features", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
+ "is_published='1' and to_article_type = 2", "date desc, webdb_create desc", 10,
+ new EntityListProducerNode("newswire", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(),
+ "is_published='1' and to_article_type = 1", "date desc, webdb_create desc", 10,
+ new EntityListProducerNode("breaking", DatabaseBreaking.getInstance(), BreakingAdapterDefinition.getInstance(),
+ "", "webdb_create desc", 5,
+ new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
+ "", "code", 10,
+ new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
+ new ResourceBundleProducerNode("lang", "producer_${language.code}",
+ new CompositeProducerNode( new ProducerNode[] {
+ new GeneratingProducerNode(
+ "/producer/indymedia.nl/start.template",
+ "${config.storageRoot}/${language.code}/start.shtml"
+ ),
+ new GeneratingProducerNode(
+ "/producer/indymedia.nl/newswire.template",
+ "${config.storageRoot}/${language.code}/newswire.inc"
+ )
+ } )
+ )
+ )
+ )
+ )
+ )
+ );
+ }
+ catch (Throwable t) {
+ }
+
+ aStartPageFactory.addFactory( new NodedProducerFactory( startPageNode ) );
+/*
+ aStartPageFactory.addFactory(
+ new StartPageProducerFactory(
+ "producer/start.template",
+ "bundles.admin",
+ MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/start.shtml",
+ MirGlobal.getConfigIntegerProperty("Producer.StartPage.Items"),
+ 0));
+
+ aStartPageFactory.addFactory(
+ new StartPageProducerFactory(
+ "producer/newswire.template",
+ "bundles.admin",
+ MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/newswire.inc",
+ 0,
+ MirGlobal.getConfigIntegerProperty("Producer.StartPage.Newswire")));
+*/
+ }
+
+ protected void setupSynchronizationFactory(CompositeProducerFactory aSynchronizationFactory) {
+ if(MirGlobal.getConfigBooleanProperty("Rsync")){
+ aSynchronizationFactory.addFactory(
+ new ScriptCallProducerFactory(MirGlobal.getConfigProperty("Rsync.Script.Path")));
+ }
+ else {
+ NullProducerFactory nullFactory = new NullProducerFactory();
+ nullFactory.addVerb("run");
+ aSynchronizationFactory.addFactory(nullFactory);
+ }
+ }
+
+ protected void setupStaticFactory(CompositeProducerFactory aStaticFactory) {
+ ProducerNode staticNode = null;
+
+ try {
+ staticNode =
+ new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(),
+ "", "code", 10,
+ new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "",
+ new ResourceBundleProducerNode("lang", "producer_${language.code}",
+ new CompositeProducerNode( new ProducerNode[] {
+ new GeneratingProducerNode(
+ "/producer/indymedia.nl/nav.template",
+ "${config.storageRoot}/${language.code}/nav.inc"
+ ),
+ new GeneratingProducerNode(
+ "/producer/indymedia.nl/top.template",
+ "${config.storageRoot}/${language.code}/top.inc"
+ ),
+ new GeneratingProducerNode(
+ "/producer/indymedia.nl/bottom.template",
+ "${config.storageRoot}/${language.code}/bottom.inc"
+ ),
+ new GeneratingProducerNode(
+ "/producer/indymedia.nl/style.template",
+ "${config.storageRoot}/${language.code}/style.css"
+ ),
+ new GeneratingProducerNode(
+ "/producer/indymedia.nl/top.template",
+ "${config.storageRoot}/${language.code}/top.inc"
+ ),
+ new GeneratingProducerNode(
+ "/producer/indymedia.nl/articlepre.template",
+ "${config.storageRoot}/${language.code}/articlepre.inc"
+ ),
+ new GeneratingProducerNode(
+ "/producer/indymedia.nl/articlepost.template",
+ "${config.storageRoot}/${language.code}/articlepost.inc"
+ ),
+ } )
+ )
+ )
+ );
+ }
+ catch (Throwable t) {
+ }
+
+ aStaticFactory.addFactory( new NodedProducerFactory( staticNode ) );
+
+
+/*
+ aStaticFactory.addFactory(
+ new StaticProducerFactory(
+ "producer/nav.template",
+ "bundles.admin",
+ MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/nav.inc"));
+
+ aStaticFactory.addFactory(
+ new StaticProducerFactory(
+ "producer/top.template",
+ "bundles.admin",
+ MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/top.inc"));
+
+ aStaticFactory.addFactory(
+ new StaticProducerFactory(
+ "producer/bottom.template",
+ "bundles.admin",
+ MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/bottom.inc"));
+
+ aStaticFactory.addFactory(
+ new StaticProducerFactory(
+ "producer/style.template",
+ "bundles.admin",
+ MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/style.css"));
+
+ aStaticFactory.addFactory(
+ new StaticProducerFactory(
+ "producer/articlepre.template",
+ "bundles.admin",
+ MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/articlepre.shtml"));
+
+ aStaticFactory.addFactory(
+ new StaticProducerFactory(
+ "producer/articlepost.template",
+ "bundles.admin",
+ MirGlobal.getConfigProperty("Producer.StorageRoot") + "/nl/articlepost.shtml"));
+*/
+ }
+}