00001 00058 package com.arcle.rmt.j2se.bridge.swimport.rqml; 00059 00060 import com.arcle.rmt.j2se.bridge.swimport.FirstClassImporter; 00061 import com.arcle.rmt.j2se.bridge.copy.CopierFacade; 00062 import com.arcle.rmt.rqml.RQMLFirstClass; 00063 import com.arcle.rmt.superwaba.model.Document; 00064 import com.arcle.rmt.j2se.model.RQMLDocument; 00065 00073 public abstract class FirstClassImport implements FirstClassImporter { 00074 00089 public boolean importFirstClass(Document srcDoc, RQMLDocument dstDoc) { 00090 int numElems = getTotalElements(srcDoc); 00091 boolean ok = true; 00092 for (int i=0; i<numElems; i++) { 00093 RQMLFirstClass srcElem = getElementAt(i, srcDoc); 00094 RQMLFirstClass dstElem = createDestinationElement(dstDoc); 00095 ok &= copyElement(srcElem, dstElem); 00096 } 00097 return ok; 00098 } 00099 00104 public String toString() { 00105 return getClass().toString() + " (importer for '" 00106 + getSupportedClass().toString() + "') "; 00107 } 00108 00116 protected boolean copyElement(RQMLFirstClass src, RQMLFirstClass dst) { 00117 return CopierFacade.getInstance().copy(getSupportedClass(), src, dst); 00118 } 00119 00120 //----------------------------------------------------------------------- 00121 // Abstract Strategy Methods 00122 00132 protected abstract Class getSupportedClass(); 00133 00141 protected abstract int getTotalElements(Document doc); 00142 00151 protected abstract RQMLFirstClass getElementAt(int index, Document srcDoc); 00152 00160 protected abstract RQMLFirstClass createDestinationElement(RQMLDocument doc); 00161 }