litesoft
@ 830
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
package org.litesoft.aokeyhole.swing.mains.mementobeans.support; import java.io.*; import java.util.*; import org.litesoft.aokeyhole.persist.*; import org.litesoft.core.simpletypes.*; import org.litesoft.core.typeutils.*; import org.litesoft.textfiledirectory.*; public class BeanSubSystemState implements BeanMagicStrings { private final String mName; private final String mPackage; private final TextFileDirectory mTextFileDirectory; private final Map<String, BeanReader> mOriginalBeansByObjectName = Maps.newHashMap(); private BeanReader[] mBeanReaders = null; // null == unread private int mNextReader = 0; public BeanSubSystemState( String pName, String pPackage, TextFileDirectory pTextFileDirectory ) { mName = pName; mPackage = pPackage; mTextFileDirectory = pTextFileDirectory; } public String getName() { return mName; } public synchronized BeanReader getNextBeanReader() { if ( mBeanReaders == null ) { populateOriginalBeans(); mBeanReaders = mOriginalBeansByObjectName.values().toArray( new BeanReader[mOriginalBeansByObjectName.size()] ); } return (mNextReader < mBeanReaders.length) ? mBeanReaders[mNextReader++] : null; } public SubSystemWriter getSubSystemWriter( Map<String, BeanObjectBuilder> pObjectBuildersByObjectName ) { return new OurSubSystemWriter(pObjectBuildersByObjectName); } private void populateOriginalBeans() { for ( String zFile : mTextFileDirectory.getFiles( SOURCE_FILE_EXTENSION ) ) { TextFile zTextFile = mTextFileDirectory.load( zFile ); BeanReader zReader = BeanReader.createFor( zTextFile.getLines() ); if (zReader != null) { mOriginalBeansByObjectName.put( zReader.getName(), zReader ); } } } private class OurSubSystemWriter implements SubSystemWriter { private final Map<String, BeanObjectBuilder> mObjectBuildersByObjectName; private OurSubSystemWriter( Map<String, BeanObjectBuilder> pObjectBuildersByObjectName ) { mObjectBuildersByObjectName = pObjectBuildersByObjectName; } @Override public void write() throws IOException { //To change body of implemented methods use File | Settings | File Templates. } } } |