aboutsummaryrefslogtreecommitdiffstats
path: root/core/src/main/java/org/onap/aaf/cadi/util
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/java/org/onap/aaf/cadi/util')
-rw-r--r--core/src/main/java/org/onap/aaf/cadi/util/Chmod.java63
-rw-r--r--core/src/main/java/org/onap/aaf/cadi/util/JsonOutputStream.java90
-rw-r--r--core/src/main/java/org/onap/aaf/cadi/util/MaskFormatException.java32
-rw-r--r--core/src/main/java/org/onap/aaf/cadi/util/MyConsole.java29
-rw-r--r--core/src/main/java/org/onap/aaf/cadi/util/NetMask.java100
-rw-r--r--core/src/main/java/org/onap/aaf/cadi/util/Split.java91
-rw-r--r--core/src/main/java/org/onap/aaf/cadi/util/SubStandardConsole.java63
-rw-r--r--core/src/main/java/org/onap/aaf/cadi/util/TheConsole.java48
-rw-r--r--core/src/main/java/org/onap/aaf/cadi/util/UserChainManip.java78
-rw-r--r--core/src/main/java/org/onap/aaf/cadi/util/Vars.java121
10 files changed, 0 insertions, 715 deletions
diff --git a/core/src/main/java/org/onap/aaf/cadi/util/Chmod.java b/core/src/main/java/org/onap/aaf/cadi/util/Chmod.java
deleted file mode 100644
index f999a11..0000000
--- a/core/src/main/java/org/onap/aaf/cadi/util/Chmod.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * ============LICENSE_START====================================================
- * * org.onap.aaf
- * * ===========================================================================
- * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
- * * ===========================================================================
- * * Licensed under the Apache License, Version 2.0 (the "License");
- * * you may not use this file except in compliance with the License.
- * * You may obtain a copy of the License at
- * *
- * * http://www.apache.org/licenses/LICENSE-2.0
- * *
- * * Unless required by applicable law or agreed to in writing, software
- * * distributed under the License is distributed on an "AS IS" BASIS,
- * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * * See the License for the specific language governing permissions and
- * * limitations under the License.
- * * ============LICENSE_END====================================================
- * *
- * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * *
- ******************************************************************************/
-package org.onap.aaf.cadi.util;
-
-import java.io.File;
-import java.io.IOException;
-
-public interface Chmod {
- public void chmod(File f) throws IOException;
-
- public static final Chmod to755 = new Chmod() {
- public void chmod(File f) throws IOException {
- f.setExecutable(true, false);
- f.setExecutable(true, true);
- f.setReadable(true, false);
- f.setReadable(true, true);
- f.setWritable(false, false);
- f.setWritable(true, true);
- }
- };
-
- public static final Chmod to644 = new Chmod() {
- public void chmod(File f) throws IOException {
- f.setExecutable(false, false);
- f.setExecutable(false, true);
- f.setReadable(true, false);
- f.setReadable(true, true);
- f.setWritable(false, false);
- f.setWritable(true, true);
- }
- };
-
- public static final Chmod to400 = new Chmod() {
- public void chmod(File f) throws IOException {
- f.setExecutable(false, false);
- f.setExecutable(false, true);
- f.setReadable(false, false);
- f.setReadable(true, true);
- f.setWritable(false, false);
- f.setWritable(false, true);
- }
- };
-}
diff --git a/core/src/main/java/org/onap/aaf/cadi/util/JsonOutputStream.java b/core/src/main/java/org/onap/aaf/cadi/util/JsonOutputStream.java
deleted file mode 100644
index 546292e..0000000
--- a/core/src/main/java/org/onap/aaf/cadi/util/JsonOutputStream.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************************************************************
- * ============LICENSE_START====================================================
- * * org.onap.aaf
- * * ===========================================================================
- * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
- * * ===========================================================================
- * * Licensed under the Apache License, Version 2.0 (the "License");
- * * you may not use this file except in compliance with the License.
- * * You may obtain a copy of the License at
- * *
- * * http://www.apache.org/licenses/LICENSE-2.0
- * *
- * * Unless required by applicable law or agreed to in writing, software
- * * distributed under the License is distributed on an "AS IS" BASIS,
- * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * * See the License for the specific language governing permissions and
- * * limitations under the License.
- * * ============LICENSE_END====================================================
- * *
- * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * *
- ******************************************************************************/
-package org.onap.aaf.cadi.util;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-public class JsonOutputStream extends OutputStream {
- private static final byte[] TWO_SPACE = " ".getBytes();
- private OutputStream os;
- private boolean closeable;
- private int indent = 0;
- private int prev,ret=0;
-
- public JsonOutputStream(OutputStream os) {
- // Don't close these, or dire consequences.
- closeable = !os.equals(System.out) && !os.equals(System.err);
- this.os = os;
- }
-
- @Override
- public void write(int b) throws IOException {
- if(ret=='\n') {
- ret = 0;
- if(prev!=',' || (b!='{' && b!='[')) {
- os.write('\n');
- for(int i=0;i<indent;++i) {
- os.write(TWO_SPACE);
- }
- }
- }
- switch(b) {
- case '{':
- case '[':
- ret = '\n';
- ++indent;
- break;
- case '}':
- case ']':
- --indent;
- os.write('\n');
- for(int i=0;i<indent;++i) {
- os.write(TWO_SPACE);
- }
- break;
- case ',':
- ret = '\n';
- break;
-
- }
- os.write(b);
- prev = b;
- }
- public void resetIndent() {
- indent = 1;
- }
-
- @Override
- public void flush() throws IOException {
- os.flush();
- }
-
- @Override
- public void close() throws IOException {
- if(closeable) {
- os.close();
- }
- }
-
-}
diff --git a/core/src/main/java/org/onap/aaf/cadi/util/MaskFormatException.java b/core/src/main/java/org/onap/aaf/cadi/util/MaskFormatException.java
deleted file mode 100644
index 551eae9..0000000
--- a/core/src/main/java/org/onap/aaf/cadi/util/MaskFormatException.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * ============LICENSE_START====================================================
- * * org.onap.aaf
- * * ===========================================================================
- * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
- * * ===========================================================================
- * * Licensed under the Apache License, Version 2.0 (the "License");
- * * you may not use this file except in compliance with the License.
- * * You may obtain a copy of the License at
- * *
- * * http://www.apache.org/licenses/LICENSE-2.0
- * *
- * * Unless required by applicable law or agreed to in writing, software
- * * distributed under the License is distributed on an "AS IS" BASIS,
- * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * * See the License for the specific language governing permissions and
- * * limitations under the License.
- * * ============LICENSE_END====================================================
- * *
- * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * *
- ******************************************************************************/
-package org.onap.aaf.cadi.util;
-
-@SuppressWarnings("serial")
-public class MaskFormatException extends Exception {
-
- public MaskFormatException(String string) {
- super(string);
- }
-
-}
diff --git a/core/src/main/java/org/onap/aaf/cadi/util/MyConsole.java b/core/src/main/java/org/onap/aaf/cadi/util/MyConsole.java
deleted file mode 100644
index de1c882..0000000
--- a/core/src/main/java/org/onap/aaf/cadi/util/MyConsole.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * ============LICENSE_START====================================================
- * * org.onap.aaf
- * * ===========================================================================
- * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
- * * ===========================================================================
- * * Licensed under the Apache License, Version 2.0 (the "License");
- * * you may not use this file except in compliance with the License.
- * * You may obtain a copy of the License at
- * *
- * * http://www.apache.org/licenses/LICENSE-2.0
- * *
- * * Unless required by applicable law or agreed to in writing, software
- * * distributed under the License is distributed on an "AS IS" BASIS,
- * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * * See the License for the specific language governing permissions and
- * * limitations under the License.
- * * ============LICENSE_END====================================================
- * *
- * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * *
- ******************************************************************************/
-package org.onap.aaf.cadi.util;
-
-public interface MyConsole {
- public String readLine(String fmt, Object ... args);
- public char[] readPassword(String fmt, Object ... args);
- public void printf(String fmt, Object ...args);
-}
diff --git a/core/src/main/java/org/onap/aaf/cadi/util/NetMask.java b/core/src/main/java/org/onap/aaf/cadi/util/NetMask.java
deleted file mode 100644
index b19f150..0000000
--- a/core/src/main/java/org/onap/aaf/cadi/util/NetMask.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * ============LICENSE_START====================================================
- * * org.onap.aaf
- * * ===========================================================================
- * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
- * * ===========================================================================
- * * Licensed under the Apache License, Version 2.0 (the "License");
- * * you may not use this file except in compliance with the License.
- * * You may obtain a copy of the License at
- * *
- * * http://www.apache.org/licenses/LICENSE-2.0
- * *
- * * Unless required by applicable law or agreed to in writing, software
- * * distributed under the License is distributed on an "AS IS" BASIS,
- * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * * See the License for the specific language governing permissions and
- * * limitations under the License.
- * * ============LICENSE_END====================================================
- * *
- * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * *
- ******************************************************************************/
-package org.onap.aaf.cadi.util;
-
-/*
- * NetMask - a class to quickly validate whether a given IP is part of a mask, as defined by bytes or standard String format.
- *
- * Needs the IPV6 Mask Builder.
- */
-public class NetMask {
- private long mask;
-
- public NetMask(byte[] inBytes) {
- mask = derive(inBytes);
- }
-
- public NetMask(String string) throws MaskFormatException {
- mask = derive(string,true);
- }
-
- public boolean isInNet(byte[] inBytes) {
- long addr = derive(inBytes);
- return (mask & addr) == addr;
- }
-
- public boolean isInNet(String str) {
- long addr;
- try {
- addr = derive(str,false);
- return (mask & addr) == addr;
- } catch (MaskFormatException e) {
- // will not hit this code;
- return false;
- }
- }
-
- public static long derive(byte[] inBytes) {
- long addr = 0L;
- int offset = inBytes.length*8;
- for(int i=0;i<inBytes.length;++i) {
- addr&=(inBytes[i]<<offset);
- offset-=8;
- }
- return addr;
- }
-
- public static long derive(String str, boolean check) throws MaskFormatException {
- long rv=0L;
- int idx=str.indexOf(':');
- int slash = str.indexOf('/');
-
- if(idx<0) { // Not IPV6, so it's IPV4... Is there a mask of 123/254?
- idx=str.indexOf('.');
- int offset = 24;
- int end = slash>=0?slash:str.length();
- int bits = slash>=0?Integer.parseInt(str.substring(slash+1)):32;
- if(check && bits>32) {
- throw new MaskFormatException("Invalid Mask Offset in IPV4 Address");
- }
- int prev = 0;
- long lbyte;
- while(prev<end) {
- if(idx<0) {
- idx = end;
- }
- lbyte = Long.parseLong(str.substring(prev, idx));
- if(check && (lbyte>255 || lbyte<0)) {
- throw new MaskFormatException("Invalid Byte in IPV4 Address");
- }
- rv|=lbyte<<offset;
- prev = ++idx;
- idx=str.indexOf('.',prev);
- offset-=8;
- }
- rv|=0x00000000FFFFFFFFL>>bits;
- }
- return rv;
- }
-
-}
diff --git a/core/src/main/java/org/onap/aaf/cadi/util/Split.java b/core/src/main/java/org/onap/aaf/cadi/util/Split.java
deleted file mode 100644
index c3b37dc..0000000
--- a/core/src/main/java/org/onap/aaf/cadi/util/Split.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * ============LICENSE_START====================================================
- * * org.onap.aaf
- * * ===========================================================================
- * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
- * * ===========================================================================
- * * Licensed under the Apache License, Version 2.0 (the "License");
- * * you may not use this file except in compliance with the License.
- * * You may obtain a copy of the License at
- * *
- * * http://www.apache.org/licenses/LICENSE-2.0
- * *
- * * Unless required by applicable law or agreed to in writing, software
- * * distributed under the License is distributed on an "AS IS" BASIS,
- * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * * See the License for the specific language governing permissions and
- * * limitations under the License.
- * * ============LICENSE_END====================================================
- * *
- * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * *
- ******************************************************************************/
-package org.onap.aaf.cadi.util;
-
-/**
- * Split by Char, optional Trim
- *
- * Note: Copied from Inno to avoid linking issues.
- * Note: I read the String split and Pattern split code, and we can do this more efficiently for a single Character
- *
- * 8/20/2015
- */
-
-public class Split {
- public static String[] split(char c, String value) {
- // Count items to preallocate Array (memory alloc is more expensive than counting twice)
- int count,idx;
- for(count=1,idx=value.indexOf(c);idx>=0;idx=value.indexOf(c,++idx),++count);
- String[] rv = new String[count];
- if(count==1) {
- rv[0]=value;
- } else {
- int last=0;
- count=-1;
- for(idx=value.indexOf(c);idx>=0;idx=value.indexOf(c,idx)) {
- rv[++count]=value.substring(last,idx);
- last = ++idx;
- }
- rv[++count]=value.substring(last);
- }
- return rv;
- }
-
- public static String[] splitTrim(char c, String value) {
- // Count items to preallocate Array (memory alloc is more expensive than counting twice)
- int count,idx;
- for(count=1,idx=value.indexOf(c);idx>=0;idx=value.indexOf(c,++idx),++count);
- String[] rv = new String[count];
- if(count==1) {
- rv[0]=value.trim();
- } else {
- int last=0;
- count=-1;
- for(idx=value.indexOf(c);idx>=0;idx=value.indexOf(c,idx)) {
- rv[++count]=value.substring(last,idx).trim();
- last = ++idx;
- }
- rv[++count]=value.substring(last).trim();
- }
- return rv;
- }
-
- public static String[] splitTrim(char c, String value, int size) {
- int idx;
- String[] rv = new String[size];
- if(size==1) {
- rv[0]=value.trim();
- } else {
- int last=0;
- int count=-1;
- size-=2;
- for(idx=value.indexOf(c);idx>=0 && count<size;idx=value.indexOf(c,idx)) {
- rv[++count]=value.substring(last,idx).trim();
- last = ++idx;
- }
- rv[++count]=value.substring(last).trim();
- }
- return rv;
- }
-
-}
diff --git a/core/src/main/java/org/onap/aaf/cadi/util/SubStandardConsole.java b/core/src/main/java/org/onap/aaf/cadi/util/SubStandardConsole.java
deleted file mode 100644
index b2a29e6..0000000
--- a/core/src/main/java/org/onap/aaf/cadi/util/SubStandardConsole.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * ============LICENSE_START====================================================
- * * org.onap.aaf
- * * ===========================================================================
- * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
- * * ===========================================================================
- * * Licensed under the Apache License, Version 2.0 (the "License");
- * * you may not use this file except in compliance with the License.
- * * You may obtain a copy of the License at
- * *
- * * http://www.apache.org/licenses/LICENSE-2.0
- * *
- * * Unless required by applicable law or agreed to in writing, software
- * * distributed under the License is distributed on an "AS IS" BASIS,
- * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * * See the License for the specific language governing permissions and
- * * limitations under the License.
- * * ============LICENSE_END====================================================
- * *
- * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * *
- ******************************************************************************/
-package org.onap.aaf.cadi.util;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-
-// Substandard, because System.in doesn't do Passwords..
-public class SubStandardConsole implements MyConsole {
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- @Override
- public String readLine(String fmt, Object... args) {
- String rv;
- try {
- System.out.printf(fmt,args);
- rv = br.readLine();
- if(args.length==1 && rv.length()==0) {
- rv = args[0].toString();
- }
- } catch (IOException e) {
- System.err.println("uh oh...");
- rv = "";
- }
- return rv;
- }
-
- @Override
- public char[] readPassword(String fmt, Object... args) {
- try {
- System.out.printf(fmt,args);
- return br.readLine().toCharArray();
- } catch (IOException e) {
- System.err.println("uh oh...");
- return new char[0];
- }
- }
-
- @Override
- public void printf(String fmt, Object... args) {
- System.out.printf(fmt, args);
- }
-}
diff --git a/core/src/main/java/org/onap/aaf/cadi/util/TheConsole.java b/core/src/main/java/org/onap/aaf/cadi/util/TheConsole.java
deleted file mode 100644
index 3a6b291..0000000
--- a/core/src/main/java/org/onap/aaf/cadi/util/TheConsole.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * ============LICENSE_START====================================================
- * * org.onap.aaf
- * * ===========================================================================
- * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
- * * ===========================================================================
- * * Licensed under the Apache License, Version 2.0 (the "License");
- * * you may not use this file except in compliance with the License.
- * * You may obtain a copy of the License at
- * *
- * * http://www.apache.org/licenses/LICENSE-2.0
- * *
- * * Unless required by applicable law or agreed to in writing, software
- * * distributed under the License is distributed on an "AS IS" BASIS,
- * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * * See the License for the specific language governing permissions and
- * * limitations under the License.
- * * ============LICENSE_END====================================================
- * *
- * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * *
- ******************************************************************************/
-package org.onap.aaf.cadi.util;
-
-public class TheConsole implements MyConsole {
- @Override
- public String readLine(String fmt, Object... args) {
- String rv = System.console().readLine(fmt, args);
- if(args.length>0 && args[0]!=null && rv.length()==0) {
- rv = args[0].toString();
- }
- return rv;
- }
-
- @Override
- public char[] readPassword(String fmt, Object... args) {
- return System.console().readPassword(fmt, args);
- }
-
- public static boolean implemented() {
- return System.console()!=null;
- }
-
- @Override
- public void printf(String fmt, Object... args) {
- System.console().printf(fmt, args);
- }
-}
diff --git a/core/src/main/java/org/onap/aaf/cadi/util/UserChainManip.java b/core/src/main/java/org/onap/aaf/cadi/util/UserChainManip.java
deleted file mode 100644
index 5f945f3..0000000
--- a/core/src/main/java/org/onap/aaf/cadi/util/UserChainManip.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*******************************************************************************
- * ============LICENSE_START====================================================
- * * org.onap.aaf
- * * ===========================================================================
- * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
- * * ===========================================================================
- * * Licensed under the Apache License, Version 2.0 (the "License");
- * * you may not use this file except in compliance with the License.
- * * You may obtain a copy of the License at
- * *
- * * http://www.apache.org/licenses/LICENSE-2.0
- * *
- * * Unless required by applicable law or agreed to in writing, software
- * * distributed under the License is distributed on an "AS IS" BASIS,
- * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * * See the License for the specific language governing permissions and
- * * limitations under the License.
- * * ============LICENSE_END====================================================
- * *
- * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * *
- ******************************************************************************/
-package org.onap.aaf.cadi.util;
-
-import org.onap.aaf.cadi.UserChain;
-
-public class UserChainManip {
- /**
- Build an element in the correct format for UserChain.
- Format:<APP>:<ID>:<protocol>[:AS][,<APP>:<ID>:<protocol>]*
- @see UserChain
- */
- public static StringBuilder build(StringBuilder sb, String app, String id, UserChain.Protocol proto, boolean as) {
- boolean mayAs;
- if(!(mayAs=sb.length()==0)) {
- sb.append(',');
- }
- sb.append(app);
- sb.append(':');
- sb.append(id);
- sb.append(':');
- sb.append(proto.name());
- if(as && mayAs) {
- sb.append(":AS");
- }
- return sb;
- }
-
- public static String idToNS(String id) {
- if(id==null) {
- return "";
- } else {
- StringBuilder sb = new StringBuilder();
- char c;
- int end;
- boolean first = true;
- for(int idx = end = id.length()-1;idx>=0;--idx) {
- if((c = id.charAt(idx))=='@' || c=='.') {
- if(idx<end) {
- if(first) {
- first = false;
- } else {
- sb.append('.');
- }
- for(int i=idx+1;i<=end;++i) {
- sb.append(id.charAt(i));
- }
- }
- end=idx-1;
- if(c=='@') {
- break;
- }
- }
- }
- return sb.toString();
- }
- }
-}
diff --git a/core/src/main/java/org/onap/aaf/cadi/util/Vars.java b/core/src/main/java/org/onap/aaf/cadi/util/Vars.java
deleted file mode 100644
index af8cf86..0000000
--- a/core/src/main/java/org/onap/aaf/cadi/util/Vars.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*******************************************************************************
- * ============LICENSE_START====================================================
- * * org.onap.aaf
- * * ===========================================================================
- * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
- * * ===========================================================================
- * * Licensed under the Apache License, Version 2.0 (the "License");
- * * you may not use this file except in compliance with the License.
- * * You may obtain a copy of the License at
- * *
- * * http://www.apache.org/licenses/LICENSE-2.0
- * *
- * * Unless required by applicable law or agreed to in writing, software
- * * distributed under the License is distributed on an "AS IS" BASIS,
- * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * * See the License for the specific language governing permissions and
- * * limitations under the License.
- * * ============LICENSE_END====================================================
- * *
- * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * *
- ******************************************************************************/
-package org.onap.aaf.cadi.util;
-
-import java.util.List;
-
-public class Vars {
- /**
- * Simplified Conversion based on typical use of getting AT&T style RESTful Error Messages
- * @param text
- * @param vars
- * @return
- */
- public static String convert(final String text, final List<String> vars) {
- String[] array = new String[vars.size()];
- StringBuilder sb = new StringBuilder();
- convert(sb,text,vars.toArray(array));
- return sb.toString();
- }
- /**
- * Convert a format string with "%s" into AT&T RESTful Error %1 %2 (number) format
- * If "holder" is passed in, it is built with full Message extracted (typically for Logging)
- * @param holder
- * @param text
- * @param vars
- * @return
- */
- public static String convert(final StringBuilder holder, final String text, final String ... vars) {
- StringBuilder sb = null;
- int idx,index=0,prev = 0;
-
- if(text.contains("%s")) {
- sb = new StringBuilder();
- }
-
- StringBuilder[] sbs = new StringBuilder[] {sb,holder};
- boolean replace, clearIndex = false;
- int c;
- while((idx=text.indexOf('%',prev))>=0) {
- replace = false;
- if(clearIndex) {
- index=0;
- }
- if(sb!=null) {
- sb.append(text,prev,idx);
- }
- if(holder!=null) {
- holder.append(text,prev,idx);
- }
-
- boolean go = true;
- while(go) {
- if(text.length()>++idx) {
- switch(c=text.charAt(idx)) {
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9':
- index *=10;
- index +=(c-'0');
- clearIndex=replace=true;
- continue;
- case 's':
- ++index;
- replace = true;
- continue;
- default:
- break;
- }
- }
- prev = idx;
- go=false;
- if(replace) {
- if(sb!=null) {
- sb.append('%');
- sb.append(index);
- }
- if(index<=vars.length) {
- if(holder!=null) {
- holder.append(vars[index-1]);
- }
- }
- } else {
- for(StringBuilder s : sbs) {
- if(s!=null) {
- s.append("%");
- }
- }
- }
- }
- }
-
- if(sb!=null) {
- sb.append(text,prev,text.length());
- }
- if(holder!=null) {
- holder.append(text,prev,text.length());
- }
-
- return sb==null?text:sb.toString();
- }
-
-}