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.schema;
 
 import java.util.List;
 
 
 public class Field {
 	enum ReqTypes {
 		True(1),
 		False(2),
 		IfPresent(3);
 	    
 	    private int code;
 
 	    private ReqTypes(int c) {
 	       = c;
 	    }
 
 	    public int getCode() {
 	      return ;
 	    }
 	}
 
 	protected Schema schema = null;
 	protected List<DataTypeoptions = new ArrayList<DataType>();
 	protected String name = null;
 	protected ReqTypes required = .;
 	
 	public Field(Schema schema) {
 		this. = schema;
 	}
 
 	public RecordStruct toJsonDef(int lvl) {
 		RecordStruct def = new RecordStruct();
 		
 		def.setField("Name"this.);
 		
 		ListStruct rests = new ListStruct();
 		
 		for (DataType dt : this.
 			rests.addItem(dt.toJsonDef(lvl));
 		
 		def.setField("Options"rests);
 		
 		def.setField("Required"this..getCode());
 		
 		return def;
 	}
 	
 	public void compile(XElement felOperationResult mr) {
 		this. = fel.getAttribute("Name");
 		
 		String req = fel.getAttribute("Required");
 		
 		if ("True".equals(req))
 			this. = .;
 		else if ("IfPresent".equals(req))
 		
 		String t1 = fel.getAttribute("Type");
 		
 		if (StringUtil.isNotEmpty(t1)) {
 			this. = this...lookupOptionsType(t1mr);
 			return;
 		}
 		
 		String f1 = fel.getAttribute("ForeignKey");
 		
 		if (StringUtil.isNotEmpty(f1)) {
 			this. = this...lookupOptionsType("Id"mr);
 			return;
 		}
 		
 		for (XElement dtel : fel.selectAll("*")) { 
 			DataType dt = new DataType(this.);
 			dt.load(mrdtel);
 			dt.compile(mr);
			this..add(dt);
		}
	}
	// don't call this with data == null from a field if field required - required means "not null" so put the error in
	public void validate(boolean presentStruct dataOperationResult mr) {
		if (data == null) {
			this.valueUnresolved(presentdatamr);
			return;
		}   
		if (this..size() == 0) {
			mr.errorTr(423, data);			
			return;
		}
		if (this..size() == 1) { 
			if (!this..get(0).validate(datamr))
				this.valueUnresolved(presentdatamr);
			return;
		}
		for (DataType dt : this.) {
			if (dt.match(datamr)) {
				if (!dt.validate(datamr))
					this.valueUnresolved(presentdatamr);
				return;
			}
		}
		mr.errorTr(440, data);			
		return;
	}
	protected void valueUnresolved(boolean presentObject dataOperationResult mr) {
		if (data != null) {
			mr.errorTr(440, data);			
			return;
		}
		if (this. == .)
			return;
		if (this. == . && !present)
			return;
		mr.errorTr(424, datathis.);			
	}
	public Struct wrap(Object dataOperationResult mr) {
		if (data == null
			return null;
		if (this..size() == 0) 
			return null;
		if (this..size() == 1) 
			return this..get(0).wrap(datamr);
		for (DataType dt : this.) {
			if (dt.match(datamr)) 
				return dt.wrap(datamr);
		}
		return null;
	}
	public Struct create(OperationResult mr) {
		if (this..size() == 0) 
			return null;
		return this..get(0).create(mr);
	}
		if (this..size() == 0) 
			return null;
		return this..get(0);
	}
New to GrepCode? Check out our FAQ X