}
}
+ public Object getToOneRelation(String aWhereClause, String anOrderByClause, String aDefinition) {
+ try {
+ Iterator i = new EntityIteratorAdapter(aWhereClause, anOrderByClause, -1, getModel(), aDefinition);
+
+ if (i.hasNext())
+ return i.next();
+ else
+ return null;
+ }
+ catch (Throwable t) {
+ throw new RuntimeException(t.getMessage());
+ }
+ }
}
\ No newline at end of file
public class LoggerWrapper {
private Object object;
+ public final static int DEBUG_MESSAGE = 1;
+ public final static int INFO_MESSAGE = 2;
+ public final static int WARN_MESSAGE = 3;
+ public final static int ERROR_MESSAGE = 4;
+ public final static int FATAL_MESSAGE = 5;
public LoggerWrapper( Object anObject ) {
object = anObject;
Log.warn(object, aMessage);
};
-
public void error( String aMessage ) {
Log.error(object, aMessage);
};
public void fatal( String aMessage ) {
Log.fatal(object, aMessage);
};
-}
\ No newline at end of file
+
+ public void message( int aType, String aMessage) {
+ switch(aType) {
+ case DEBUG_MESSAGE:
+ debug(aMessage);
+ break;
+ case INFO_MESSAGE:
+ info(aMessage);
+ break;
+ case WARN_MESSAGE:
+ warn(aMessage);
+ break;
+ case ERROR_MESSAGE:
+ error(aMessage);
+ break;
+ case FATAL_MESSAGE:
+ fatal(aMessage);
+ break;
+ default:
+ warn("LoggerWrapper.message: Unknown message type ("+aType+") for message '" + aMessage + "'");
+ }
+ }
+}
+
--- /dev/null
+package mir.log;
+
+import java.io.*;
+import java.util.*;
+
+public class WriterToLoggerAdapter extends Writer {
+ private LoggerWrapper logger;
+ private int messageType;
+ private StringBuffer lineBuffer;
+ private String lineSeparator;
+
+ public WriterToLoggerAdapter(LoggerWrapper aLogger, int aMessageType) {
+ lineBuffer = new StringBuffer();
+ logger = aLogger;
+ messageType = aMessageType;
+ lineSeparator = System.getProperty("line.separator");
+ }
+
+ public WriterToLoggerAdapter(Logger aLogger, int aMessageType) {
+ this(new LoggerWrapper(aLogger), aMessageType);
+ }
+
+ public void close() {
+ flush();
+ }
+
+ public void flush() {
+ if (lineBuffer.length()>0) {
+ logger.message(messageType, lineBuffer.toString());
+ lineBuffer.delete(0, lineBuffer.length());
+ }
+ }
+
+ protected void checkBuffer() {
+ int from = 0;
+ int until = lineBuffer.toString().indexOf(lineSeparator, from);
+
+ while (until>-1) {
+ String line = lineBuffer.substring(from, until);
+ logger.message(messageType, line);
+ from = until + lineSeparator.length();
+ until = lineBuffer.toString().indexOf(lineSeparator, from);
+ }
+
+ lineBuffer.delete(0, from);
+ };
+
+ public void write(char[] aBuffer, int anOffset, int aLength) {
+ lineBuffer.append(aBuffer, anOffset, aLength);
+ checkBuffer();
+ }
+}
\ No newline at end of file
aLogger.println(text);
}
catch (Throwable t) {
- throw new ProducerFailure(t.getMessage(), t);
+ try {
+ aLogger.println("Exception while logging message '"+expression+"': " + t.getMessage());
+ }
+ catch (Throwable s) {
+ }
}
}
}
\ No newline at end of file
currentValue = ((Map) currentValue).get(qualifier);
}
else {
- throw new RuntimeException("cannot reference into anything other than a map");
+ throw new RuntimeException("cannot reference into anything other than a map ('"+qualifier+"')");
}
}
else if (token instanceof IdentifierToken) {
currentValue = ((Map) currentValue).get(qualifier);
}
else {
- throw new RuntimeException("cannot reference into anything other than a map");
+ throw new RuntimeException("cannot reference into anything other than a map ('"+qualifier+"')");
}
}
else if (token instanceof LeftParenthesisToken) {
protected class CommentToContentField implements EntityAdapterDefinition.CalculatedField {\r
public Object getValue(EntityAdapter anEntityAdapter) {\r
try {\r
- return anEntityAdapter.getRelation(\r
+ return anEntityAdapter.getToOneRelation(\r
"id="+anEntityAdapter.get("to_media"),\r
"id",\r
"content" );\r
protected class ContentToLanguageField implements EntityAdapterDefinition.CalculatedField {\r
public Object getValue(EntityAdapter anEntityAdapter) {\r
try {\r
- return anEntityAdapter.getRelation(\r
+ return anEntityAdapter.getToOneRelation(\r
"id="+anEntityAdapter.get("to_language"),\r
"id",\r
"language" );\r