package org.ovirt.engine.core.searchbackend; import org.ovirt.engine.core.compat.*; public class SyntaxContainer implements Iterable<SyntaxObject> { private String mOrigText = null; private boolean mValid = false; private SyntaxError mError = SyntaxError.NO_ERROR; private int[] mErrorPos = new int[2]; private java.util.LinkedList<SyntaxObject> mObjList = null; private java.util.ArrayList<String> mCurrentCompletions = null; private int privateMaxCount; private long searchFrom = 0; private boolean caseSensitive=true; public int getMaxCount() { return privateMaxCount; } public void setMaxCount(int value) { privateMaxCount = value; } public long getSearchFrom() { return searchFrom; } public void setSearchFrom(long value) { searchFrom = value; } public boolean getvalid() { return mValid; } public void setvalid(boolean value) { mValid = value; } public SyntaxError getError() { return mError; } public boolean getCaseSensitive() { return caseSensitive; } public void setCaseSensitive(boolean value) { caseSensitive = value; } public int getErrorStartPos() { return mErrorPos[0]; } public int getErrorEndPos() { return mErrorPos[1]; } public SyntaxObject getFirst() { return mObjList.getFirst(); } public String getSearchObjectStr() { String retval = null; if (mObjList.getFirst() != null) { retval = getObjSingularName(mObjList.getFirst().getBody()); } return retval; } public SyntaxContainer(String origText) { mOrigText = origText; mValid = false; mObjList = new java.util.LinkedList<SyntaxObject>(); mCurrentCompletions = new java.util.ArrayList<String>(); } public void setErr(SyntaxError errCode, int startPos, int endPos) { mErrorPos[0] = startPos; mErrorPos[1] = endPos; mError = errCode; mValid = false; } public void addSyntaxObject(SyntaxObjectType type, String body, int startPos, int endPos) { SyntaxObject newObj = new SyntaxObject(type, body, startPos, endPos); mObjList.addLast(newObj); } public SyntaxObjectType getState() { SyntaxObjectType retval = SyntaxObjectType.BEGIN; if (mObjList.size() > 0) { retval = mObjList.getLast().getType(); } return retval; } public int getLastHandledIndex() { int retval = 0; if (mObjList.size() > 0) { retval = mObjList.getLast().getPos()[1]; } return retval; } public String getPreviousSyntaxObject(int steps, SyntaxObjectType type) { String retval = ""; if (mObjList.size() > steps) { SyntaxObject obj = mObjList.get(mObjList.size() - 1 - steps); if (obj.getType() == type) { retval = obj.getBody(); } } if ((StringHelper.EqOp(retval, "")) && ((type == SyntaxObjectType.CROSS_REF_OBJ) || (type == SyntaxObjectType.SEARCH_OBJECT))) { retval = mObjList.getFirst().getBody(); } return retval; } public SyntaxObjectType getPreviousSyntaxObjectType(int steps) { SyntaxObjectType retval = SyntaxObjectType.END; if (mObjList.size() > steps) { SyntaxObject obj = mObjList.get(mObjList.size() - 1 - steps); retval = obj.getType(); } return retval; } public void addToACList(String[] acArr) { for (int idx = 0; idx < acArr.length; idx++) { mCurrentCompletions.add(acArr[idx]); } } public String[] getCompletionArray() { String[] retval = new String[mCurrentCompletions.size()]; for (int idx = 0; idx < mCurrentCompletions.size(); idx++) { retval[idx] = mCurrentCompletions.get(idx); } return retval; } public java.util.ArrayList<String> getCrossRefObjList() { java.util.ArrayList<String> retval = new java.util.ArrayList<String>(); String searchObj = getObjSingularName(getSearchObjectStr()); for (SyntaxObject obj : mObjList) { if (obj.getType() == SyntaxObjectType.CROSS_REF_OBJ) { String objSingularName = getObjSingularName(obj.getBody()); if ((!retval.contains(objSingularName)) && (!StringHelper.EqOp(searchObj, objSingularName))) { retval.add(objSingularName); } } } return retval; } public String getObjSingularName(String obj) { String retval = obj; if (obj == null) { return null; } // VB & C# TO JAVA CONVERTER NOTE: The following 'switch' operated on a // string member and was converted to Java 'if-else' logic: // switch (obj) // ORIGINAL LINE: case SearchObjects.AD_USER_OBJ_NAME: if (StringHelper.EqOp(obj, SearchObjects.AD_USER_OBJ_NAME) || StringHelper.EqOp(obj, SearchObjects.AD_USER_PLU_OBJ_NAME)) { retval = SearchObjects.AD_USER_OBJ_NAME; } // ORIGINAL LINE: case SearchObjects.AUDIT_OBJ_NAME: else if (StringHelper.EqOp(obj, SearchObjects.AUDIT_OBJ_NAME) || StringHelper.EqOp(obj, SearchObjects.AUDIT_PLU_OBJ_NAME)) { retval = SearchObjects.AUDIT_OBJ_NAME; } // ORIGINAL LINE: case SearchObjects.TEMPLATE_OBJ_NAME: else if (StringHelper.EqOp(obj, SearchObjects.TEMPLATE_OBJ_NAME) || StringHelper.EqOp(obj, SearchObjects.TEMPLATE_PLU_OBJ_NAME)) { retval = SearchObjects.TEMPLATE_OBJ_NAME; } // ORIGINAL LINE: case SearchObjects.VDC_USER_OBJ_NAME: else if (StringHelper.EqOp(obj, SearchObjects.VDC_USER_OBJ_NAME) || StringHelper.EqOp(obj, SearchObjects.VDC_USER_PLU_OBJ_NAME)) { retval = SearchObjects.VDC_USER_OBJ_NAME; } // ORIGINAL LINE: case SearchObjects.VDS_OBJ_NAME: else if (StringHelper.EqOp(obj, SearchObjects.VDS_OBJ_NAME) || StringHelper.EqOp(obj, SearchObjects.VDS_PLU_OBJ_NAME)) { retval = SearchObjects.VDS_OBJ_NAME; } // ORIGINAL LINE: case SearchObjects.VM_OBJ_NAME: else if (StringHelper.EqOp(obj, SearchObjects.VM_OBJ_NAME) || StringHelper.EqOp(obj, SearchObjects.VM_PLU_OBJ_NAME)) { retval = SearchObjects.VM_OBJ_NAME; } // ORIGINAL LINE: case SearchObjects.VDC_POOL_OBJ_NAME: else if (StringHelper.EqOp(obj, SearchObjects.VDC_POOL_OBJ_NAME) || StringHelper.EqOp(obj, SearchObjects.VDC_POOL_PLU_OBJ_NAME)) { retval = SearchObjects.VDC_POOL_OBJ_NAME; } // ORIGINAL LINE: case SearchObjects.VDC_CLUSTER_OBJ_NAME: else if (StringHelper.EqOp(obj, SearchObjects.VDC_CLUSTER_OBJ_NAME) || StringHelper.EqOp(obj, SearchObjects.VDC_CLUSTER_PLU_OBJ_NAME)) { retval = SearchObjects.VDC_CLUSTER_OBJ_NAME; } // ORIGINAL LINE: case SearchObjects.VDC_STORAGE_POOL_OBJ_NAME: else if (StringHelper.EqOp(obj, SearchObjects.VDC_STORAGE_POOL_OBJ_NAME) || StringHelper.EqOp(obj, SearchObjects.VDC_STORAGE_DOMAIN_OBJ_NAME)) { retval = obj; } else { retval = obj; } return retval; } @Override public String toString() { StringBuilderCompat sb = new StringBuilderCompat("---------------- SyntaxContainer ---------------------"); sb.append("\n"); sb.append("mOrigText = "); sb.AppendLine(mOrigText); sb.append("Valid = "); sb.AppendLine(Boolean.toString(mValid)); sb.append("Error = "); sb.AppendLine(mError.toString()); sb.append("CrossRefObjlist = "); for (String cro : getCrossRefObjList()) { sb.append(StringFormat.format("%1$s, ", cro)); } sb.append("Syntax object list:"); for (SyntaxObject obj : mObjList) { sb.AppendLine(" "); sb.append(obj.toString()); } return sb.toString(); } public String ToStringBr() { StringBuilderCompat sb = new StringBuilderCompat("---------------- SyntaxContainer ---------------------"); sb.append("<BR>mOrigText = "); sb.append(mOrigText); sb.append("<BR>Valid = "); sb.append(mValid); sb.append("<BR>Error = "); sb.append(mError); sb.append("<BR>Syntax object list:"); sb.append("<BR>CrossRefObjlist = "); for (String cro : getCrossRefObjList()) { sb.append(StringFormat.format("%1$s, ", cro)); } for (SyntaxObject obj : mObjList) { sb.append("<BR> "); sb.append(obj.toString()); } return sb.toString(); } public boolean contains(SyntaxObjectType type, String val) { boolean retval = false; for (SyntaxObject obj : mObjList) { if ((obj.getType() == type) && (StringHelper.EqOp(obj.getBody().toUpperCase(), val.toUpperCase()))) { retval = true; break; } } return retval; } public java.util.ListIterator<SyntaxObject> listIterator(int index) { return mObjList.listIterator(index); } public java.util.Iterator<SyntaxObject> iterator() { return mObjList.iterator(); } }