svnno****@sourc*****
svnno****@sourc*****
2008年 10月 25日 (土) 18:13:27 JST
Revision: 2032 http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=jiemamy&view=rev&rev=2032 Author: daisuke_m Date: 2008-10-25 18:13:27 +0900 (Sat, 25 Oct 2008) Log Message: ----------- コーディング規約に準拠。 Modified Paths: -------------- artemis/trunk/org.jiemamy.serializer/src/main/java/org/jiemamy/serializer/ModelInputStream.java -------------- next part -------------- Modified: artemis/trunk/org.jiemamy.serializer/src/main/java/org/jiemamy/serializer/ModelInputStream.java =================================================================== --- artemis/trunk/org.jiemamy.serializer/src/main/java/org/jiemamy/serializer/ModelInputStream.java 2008-10-25 09:02:08 UTC (rev 2031) +++ artemis/trunk/org.jiemamy.serializer/src/main/java/org/jiemamy/serializer/ModelInputStream.java 2008-10-25 09:13:27 UTC (rev 2032) @@ -47,6 +47,68 @@ */ public class ModelInputStream extends InputStream { + /** 初期化済みかどうか */ + private boolean initialized; + + private Queue<Byte> resourceQueues = new LinkedBlockingQueue<Byte>(); + + private ModelWriter modelWriter = new ModelWriter(resourceQueues); + + private Stack<JiemamyModel> nextWriteModelStacks = new Stack<JiemamyModel>(); + + + /** + * コンストラクタ。 + * @param rootModel + * @category instance creation + */ + public ModelInputStream(RootModel rootModel) { + nextWriteModelStacks.push(rootModel); + } + + /** + * {@inheritDoc} + */ + @Override + public void close() throws IOException { + modelWriter.dispose(); + super.close(); + } + + /** + * {@inheritDoc} + */ + @Override + public int read() throws IOException { + if (initialized == false) { + modelWriter.init(); + initialized = true; + } + if (resourceQueues.size() == 0) { + if (loadFromModel() == false) { + return -1; + } + } + return resourceQueues.poll().intValue(); + } + + /** + * 要求された1モデルだけを読み込み,Byteのキューに追加していく + * @return 読み込むデータがない場合false, ある場合true + * @throws IllegalArgumentException + */ + private boolean loadFromModel() { + if (nextWriteModelStacks.empty()) { + return false; + } + List<JiemamyModel> nextObjects = modelWriter.write(nextWriteModelStacks.pop()); + for (JiemamyModel next : nextObjects) { + nextWriteModelStacks.push(next); + } + return resourceQueues.size() > 0 || nextWriteModelStacks.empty() == false; + } + + private class ModelWriter { private Queue<Byte> resourceQueues; @@ -68,12 +130,6 @@ createModelWriter(); } - private void createModelWriter() { - stringWriter = (new StringWriter()); - dataWriter = (new DataWriter(stringWriter)); - dataWriter.setIndentStep(2); - } - /** * 破棄処理 */ @@ -111,7 +167,7 @@ while (clazz != Object.class) { Method[] methods = clazz.getMethods(); for (Method method : methods) { - if ((method.getParameterTypes().length > 0) || (!method.getName().startsWith("get")) + if ((method.getParameterTypes().length > 0) || (method.getName().startsWith("get") == false) || (method.getModifiers() == Modifier.STATIC)) { continue; } @@ -141,7 +197,7 @@ dataWriter.dataElement("refid", ((JiemamyModel) value).getId().toString()); dataWriter.endElement(refClassName); dataWriter.endElement(method.getName()); - if (!nextWriteModelMaps.containsKey(((JiemamyModel) value).getId())) { + if (nextWriteModelMaps.containsKey(((JiemamyModel) value).getId()) == false) { nextWriteModelMaps.put(((JiemamyModel) value).getId(), ((JiemamyModel) value)); nextWriteModelList.add(((JiemamyModel) value)); } @@ -156,7 +212,7 @@ dataWriter.startElement(refClassName); dataWriter.dataElement("refid", ((JiemamyModel) e).getId().toString()); dataWriter.endElement(refClassName); - if (!nextWriteModelMaps.containsKey(((JiemamyModel) e).getId())) { + if (nextWriteModelMaps.containsKey(((JiemamyModel) e).getId()) == false) { nextWriteModelMaps.put(((JiemamyModel) e).getId(), ((JiemamyModel) e)); nextWriteModelList.add(((JiemamyModel) e)); } @@ -191,66 +247,11 @@ return nextWriteModelList; } - } - - - private boolean initialized; - - private Queue<Byte> resourceQueues = new LinkedBlockingQueue<Byte>(); - - private ModelWriter modelWriter = new ModelWriter(resourceQueues); - - private Stack<JiemamyModel> nextWriteModelStacks = new Stack<JiemamyModel>(); - - - /** - * コンストラクタ。 - * @param rootModel - * @category instance creation - */ - public ModelInputStream(RootModel rootModel) { - nextWriteModelStacks.push(rootModel); - } - - /** - * {@inheritDoc} - */ - @Override - public void close() throws IOException { - modelWriter.dispose(); - super.close(); - } - - /** - * 要求された1モデルだけを読み込み,Byteのキューに追加していく - * @return 読み込むデータがない場合false, ある場合true - * @throws IllegalArgumentException - */ - private boolean loadFromModel() { - if (nextWriteModelStacks.empty()) { - return false; + private void createModelWriter() { + stringWriter = (new StringWriter()); + dataWriter = (new DataWriter(stringWriter)); + dataWriter.setIndentStep(2); } - List<JiemamyModel> nextObjects = modelWriter.write(nextWriteModelStacks.pop()); - for (JiemamyModel next : nextObjects) { - nextWriteModelStacks.push(next); - } - return resourceQueues.size() > 0 || !nextWriteModelStacks.empty(); + } - - /*/** - * {@inheritDoc} - */ - @Override - public int read() throws IOException { - if (!initialized) { - modelWriter.init(); - initialized = true; - } - if (resourceQueues.size() == 0) { - if (!loadFromModel()) { - return -1; - } - } - return resourceQueues.poll().intValue(); - } }