Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /* ************************************************************************
  #
  #  DivConq
  #
  #  http://divconq.com/
  #
  #  Copyright:
  #    Copyright 2014 eTimeline, LLC. All rights reserved.
  #
 #  License:
 #    See the license.txt file in the project's top-level directory for details.
 #
 #  Authors:
 #    * Andy White
 #
 ************************************************************************ */
 package divconq.struct.scalar;
 
 
 
 
 public class StringStruct extends ScalarStruct {
 	protected String value = null;
 
 	public DataType getType() {
 		if (this. != null)
 			return super.getType();
 		
 		return ..getSchema().getType("String");
 	}
 
 	public StringStruct() {		
 	}
 
 	public StringStruct(Object v) {
 		this.adaptValue(v);
 	}
 	
 	public Object getGenericValue() {
 		return this.;
 	}
 	
 	public void adaptValue(Object v) {
 		this. = Struct.objectToString(v);
 	}
 
 	public String getValue() {
 		return this.
 	}
 	
 	public void setValue(String v) { 
 		this. = v
 	}
 	
 	public boolean isEmpty() {
 		return StringUtil.isEmpty(this.);
 	}
 	
 	public boolean isNull() {
 		return (this. == null);
 	}
 	
 	public void operation(StackEntry stackXElement code) {
 		if ("Lower".equals(code.getName())) {
 			if (StringUtil.isNotEmpty(this.))
 				this. = this..toLowerCase();
 			
 			stack.resume();
 			return;
 		}
 		else if ("Upper".equals(code.getName())) {
 			if (StringUtil.isNotEmpty(this.))
 				this. = this..toUpperCase();
 			
 			stack.resume();
 			return;
 		}
 		else if ("Set".equals(code.getName())) {
 			Struct sref = code.hasAttribute("Value")
 					? stack.refFromElement(code"Value")
 					: stack.resolveValue(code.getText());
 			
			this.adaptValue(sref);			
			stack.resume();
			return;
		}
		else if ("Format".equals(code.getName())) {
			Struct sref = code.hasAttribute("Value")
stack.refFromElement(code"Value")
stack.resolveValue(code.getText());
			String pat = stack.stringFromElement(code"Pattern");
			try {
				if (sref instanceof DateTimeStruct)
					this. = DateTimeFormat.forPattern(pat).print(((DateTimeStruct)sref).getValue());			
				else if (sref instanceof DateStruct)
					this. = DateTimeFormat.forPattern(pat).print(((DateStruct)sref).getValue());			
				else if (sref instanceof DecimalStruct)
					this. = new DecimalFormat(pat).format(((DecimalStruct)sref).getValue());			
				else if (sref instanceof IntegerStruct || sref instanceof BigIntegerStruct)		
					this. = String.format(pat, ((ScalarStruct)sref).getGenericValue());			
			}
			catch (Exception x) {
				OperationContext.get().error("Error doing " + code.getName() + ": " + x);
			}
			stack.resume();
			return;
		}
		else if ("Append".equals(code.getName())) {
			String me = (this. == null) ? "" : this.;
			String it = "";
			Struct sref = code.hasAttribute("Value")
stack.refFromElement(code"Value")
stack.resolveValue(code.getText());
			String its = Struct.objectToString(sref);
			if (its != null)
				it = its;
			this. = me + it;			
			stack.resume();
			return;
		}
		else if ("Replace".equals(code.getName())) {
			if (StringUtil.isNotEmpty(this.)) {
				String from = stack.stringFromElement(code"Old"); 
				String to = stack.stringFromElement(code"New"); 
				String pattern = stack.stringFromElement(code"Pattern"); 
				if (StringUtil.isEmpty(pattern))
					this. = this..replace(fromto);
				else 
					this. = this..replaceAll(patternto);
			}
			stack.resume();
			return;
		}
		else if ("Substring".equals(code.getName())) {
			if (StringUtil.isNotEmpty(this.)) {
				int from = (intstack.intFromElement(code"From", 0); 
				int to = (intstack.intFromElement(code"To", 0); 
				int length = (intstack.intFromElement(code"Length", 0); 
				if (to > 0) 
					this. = this..substring(fromto);
				else if (length > 0) 
					this. = this..substring(fromfrom + length);
				else
					this. = this..substring(from);
			}
			stack.resume();
			return;
		}
		else if ("FillCode".equals(code.getName())) {
			int length = (intstack.intFromElement(code"Length", 12); 
			this. = StringUtil.buildSecurityCode(length);
			stack.resume();
			return;
		}
		else if ("Trim".equals(code.getName())) {
			if (StringUtil.isNotEmpty(this.)) 
				this. = StringUtil.stripWhitespace(this..trim());
			stack.resume();
			return;
		}
		else if ("TrimStart".equals(code.getName())) {
			if (StringUtil.isNotEmpty(this.)) 
				this. = StringUtil.stripLeadingWhitespace(this.);
			stack.resume();
			return;
		}
		else if ("TrimEnd".equals(code.getName())) {
			if (StringUtil.isNotEmpty(this.)) 
				this. = StringUtil.stripTrailingWhitespace(this.);
			stack.resume();
			return;
		}
		else if ("LeftPad".equals(code.getName())) {
			if (StringUtil.isEmpty(this.)) 
				this. = "";
			int size = (intstack.intFromElement(code"Size", 1);
			String ch = code.hasAttribute("With") ? stack.stringFromElement(code"With") : " ";
			this. = StringUtil.leftPad(this.sizech);
			stack.resume();
			return;
		}
		else if ("RightPad".equals(code.getName())) {
			if (StringUtil.isEmpty(this.)) 
				this. = "";
			int size = (intstack.intFromElement(code"Size", 1);
			String ch = code.hasAttribute("With") ? stack.stringFromElement(code"With") : " ";
			this. = StringUtil.rightPad(this.sizech);
			stack.resume();
			return;
		}
		/*
		// TODO also implement
		 *  <Join List="$var" With="delim" />
		// <Piece Delim="str" Index="num" />
		// <Align Size="num" Pad="left|right" PadChar="c" />
		 */
		super.operation(stackcode);
	}
    @Override
    protected void doCopy(Struct n) {
    	super.doCopy(n);
    	
    	StringStruct nn = (StringStruct)n;
    	nn.value = this.;
    }
    
	public Struct deepCopy() {
		StringStruct cp = new StringStruct();
		this.doCopy(cp);
		return cp;
	}
	public boolean equals(Object obj) {
		return (StringStruct.comparison(thisobj) == 0);
	}
	public int compare(Object y) {
		return StringStruct.comparison(thisy);
	}
	public int hashCode() {
		return (this. == null) ? 0 : this..hashCode();
	}
	public String toString() {
		return (this. == null) ? "null" : this..toString();
	}
		return this.;
	}
	public static int comparison(Object xObject y)
	{
		String xv = Struct.objectToString(x);
		String yv = Struct.objectToString(y);
		if ((yv == null) && (xv == null))
			return 0;
		if (yv == null)
			return 1;
		if (xv == null)
			return -1;
		return xv.compareTo(yv);
	}
	public boolean checkLogic(StackEntry stackXElement source) {
		boolean isok = true;
		boolean condFound = false;
		if (this. != null) {
			boolean caseinsensitive = stack.boolFromElement(source"CaseInsensitive"false);
			if (!condFound && source.hasAttribute("Contains")) {
				String other = stack.stringFromElement(source"Contains");
	            isok = caseinsensitive ? this..toLowerCase().contains(other.toLowerCase()) : this..contains(other);
	            condFound = true;
	        }
			if (!condFound && source.hasAttribute("StartsWith")) {
				String other = stack.stringFromElement(source"StartsWith");
	            isok = caseinsensitive ? this..toLowerCase().startsWith(other.toLowerCase()) : this..startsWith(other);
	            condFound = true;
	        }
			if (!condFound && source.hasAttribute("EndsWith")) {
				String other = stack.stringFromElement(source"EndsWith");
	            isok = caseinsensitive ? this..toLowerCase().endsWith(other.toLowerCase()) : this..endsWith(other);
	            condFound = true;
	        }
		}
		if (!condFound
			isok = Struct.objectToBooleanOrFalse(this.);
		return isok;
	}
New to GrepCode? Check out our FAQ X