litesoft
@ 812
litesoft / trunk / Java / core / Server / src / org / litesoft / filesinksource / FileSinkAndSourceFactory.java
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 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
// This Source Code is in the Public Domain per: http://litesoft.org/License.txt package org.litesoft.filesinksource; import java.io.*; import org.litesoft.codec.*; import org.litesoft.core.typeutils.*; import org.litesoft.util.*; public abstract class FileSinkAndSourceFactory { public final FileSink createFileSink( String pName ) throws IOException { if ( (pName.indexOf( '\\' ) != -1) || (pName.indexOf( '/' ) != -1) ) { throw new IllegalArgumentException( "Invalid File Name, found Path Sep in: " + pName ); } return LLcreateFileSink( pName ); } protected abstract FileSink LLcreateFileSink( String pName ) throws IOException; public abstract FileSource createFileSource( String pOpaqueHandle ) throws IOException; private static FileSinkAndSourceFactory sInstance = Null.INSTANCE; public static FileSinkAndSourceFactory getInstance() { return sInstance; } public static void setInstance( FileSinkAndSourceFactory pInstance ) { sInstance = (pInstance != null) ? pInstance : Null.INSTANCE; } public static class Null extends FileSinkAndSourceFactory { public static final FileSinkAndSourceFactory INSTANCE = new Null(); private Null() { } @Override protected FileSink LLcreateFileSink( String pName ) throws IOException { throw new RuntimeException( "Null" ); } @Override public FileSource createFileSource( String pOpaqueHandle ) throws IOException { throw new RuntimeException( "Null" ); } } protected static abstract class AbstractFileSink implements FileSink { protected final String mDesiredFileName; protected AbstractFileSink( String pDesiredFileName ) { mDesiredFileName = Utils.assertNotNullNotEmpty( "DesiredFileName", pDesiredFileName ); } } protected static abstract class AbstractFileSource implements FileSource { protected final String mOpaqueHandle; protected AbstractFileSource( String pOpaqueHandle ) { mOpaqueHandle = Utils.assertNotNullNotEmpty( "OpaqueHandle", pOpaqueHandle ); } } protected static abstract class AbstractFileSourceInfo implements FileSourceInfo { private final String mDesiredFileName; protected AbstractFileSourceInfo( String pDesiredFileName ) { mDesiredFileName = Utils.assertNotNullNotEmpty( "DesiredFileName", pDesiredFileName ); } @Override public String getName() { return mDesiredFileName; } @Override public InputStream getInputStream() throws IOException { return null; } } protected static abstract class AbstractOpaqueHandle { protected final String mDesiredFileName; protected AbstractOpaqueHandle( String pDesiredFileName ) { mDesiredFileName = Utils.assertNotNullNotEmpty( "DesiredFileName", pDesiredFileName ); } public String getDesiredFileName() { return mDesiredFileName; } protected String toString( String pHandlePrefix, String pOpaquePart ) { return pHandlePrefix + HexStringCodec.encode( pOpaquePart ) + "/" + mDesiredFileName; } /** * @return String pair - 1st = OpaquePart, 2nd = DesiredFileName */ protected static String[] parse( String pHandlePrefix, String pOpaqueHandleToString ) { if ( pOpaqueHandleToString.startsWith( pHandlePrefix ) ) { String zRest = pOpaqueHandleToString.substring( pHandlePrefix.length() ); int slashAt = zRest.lastIndexOf( '/' ); if ( slashAt != -1 ) { String zOpaquePart = Strings.noEmpty( HexStringCodec.decode( zRest.substring( 0, slashAt ).trim() ) ); String zDesiredFileName = Strings.noEmpty( zRest.substring( slashAt + 1 ) ); if ( (zOpaquePart != null) && (zDesiredFileName != null) ) { return new String[]{zOpaquePart, zDesiredFileName}; } } } return null; } } } |
Commits for litesoft/trunk/Java/core/Server/src/org/litesoft/filesinksource/FileSinkAndSourceFactory.java
Revision | Author | Commited | Message |
---|---|---|---|
812 Diff | GeorgeS | Sat 18 Aug, 2012 17:45:40 +0000 | |
811 Diff | GeorgeS | Sat 18 Aug, 2012 13:45:18 +0000 | |
801 Diff | GeorgeS | Wed 15 Aug, 2012 03:59:02 +0000 | |
151 Diff | GeorgeS | Thu 17 Mar, 2011 04:16:22 +0000 | |
49 Diff | GeorgeS | Mon 12 Apr, 2010 02:59:10 +0000 | License Text |
24 Diff | GeorgeS | Wed 24 Feb, 2010 01:51:38 +0000 | |
2 | GeorgeS | Sun 07 Feb, 2010 12:50:58 +0000 |