litesoft
@ 917
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 |
// This Source Code is in the Public Domain per: http://litesoft.org/License.txt package org.litesoft.util.template; import org.litesoft.core.typeutils.Objects; import org.litesoft.core.typeutils.*; import java.io.*; import java.util.*; public class RepeatingTC extends AbstractTC implements TCsub { private String mReplacementKey; private Object[] mSubstituteFroms; private Reader mTemplate; public RepeatingTC( String pReplacementKey, Object[] pSubstituteFroms, Reader pTemplate, Collection<TCsub> pSubstitutions ) { super( pSubstitutions ); mReplacementKey = Strings.assertNotNullNotEmpty( "ReplacementKey", pReplacementKey ); mSubstituteFroms = pSubstituteFroms; Objects.assertNotNull( "Template", mTemplate = pTemplate ); } public RepeatingTC( String pReplacementKey, Object[] pSubstituteFroms, Reader pTemplate, TCsub... pSubstitutions ) { this( pReplacementKey, pSubstituteFroms, pTemplate, makeSet( pSubstitutions ) ); } public RepeatingTC( String pReplacementKey, Object[] pSubstituteFroms, String pTemplate, Collection<TCsub> pSubstitutions ) { this( pReplacementKey, pSubstituteFroms, new StringReader( pTemplate ), pSubstitutions ); } public RepeatingTC( String pReplacementKey, Object[] pSubstituteFroms, String pTemplate, TCsub... pSubstitutions ) { this( pReplacementKey, pSubstituteFroms, pTemplate, makeSet( pSubstitutions ) ); } @Override public String getReplacementKey() { return mReplacementKey; } @Override public void replace( Writer pWriter, String pReplaceNotFoundsWith, Object pReplaceFrom ) throws IOException { String zText = loadText(); for ( Object zSubstituteFrom : mSubstituteFroms ) { pWriter.write( processSubstitutionsFrom( zText, pWriter, pReplaceNotFoundsWith, zSubstituteFrom ) ); } } private String loadText() throws IOException { char[] zChars = new char[4096]; int zCntRead = mTemplate.read( zChars ); if ( zCntRead < 4096 ) { return (zCntRead <= 0) ? "" : new String( zChars, 0, zCntRead ); } StringBuilder zSB = new StringBuilder( 9999 ); do { zSB.append( zChars, 0, zCntRead ); } while ( 4096 == (zCntRead = mTemplate.read( zChars )) ); if ( zCntRead > 0 ) { zSB.append( zChars, 0, zCntRead ); } return zSB.toString(); } } |
Commits for litesoft/trunk/Java/core/Server/src/org/litesoft/util/template/RepeatingTC.java
Revision | Author | Commited | Message |
---|---|---|---|
917 Diff | GeorgeS | Sun 08 Dec, 2013 20:49:56 +0000 | 1.7 prep & VersionedStaticContentFilter upgrade to new “/ver” model! |
821 Diff | GeorgeS | Sun 19 Aug, 2012 00:08:41 +0000 | |
804 Diff | GeorgeS | Wed 15 Aug, 2012 12:48:51 +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 |