00001 00058 package com.arcle.rmt.j2se.bridge.swexport.rqml; 00059 00060 import com.arcle.rmt.rqml.RQMLFirstClass; 00061 import com.arcle.rmt.superwaba.model.Document; 00062 import com.arcle.rmt.j2se.bridge.swexport.FirstClassExporter; 00063 import com.arcle.rmt.j2se.bridge.copy.CopierFacade; 00064 00070 public abstract class FirstClassExport implements FirstClassExporter { 00071 00085 public boolean export(RQMLFirstClass srcElem, Document dest) { 00086 boolean ok = false; 00087 if (acceptsInstance(srcElem)) { 00088 RQMLFirstClass dstElem = doCreateElement(dest); 00089 ok = doCopyElement(srcElem, dstElem); 00090 } 00091 return ok; 00092 } 00093 00102 protected boolean acceptsInstance(RQMLFirstClass elem) { 00103 return getSupportedClass().isInstance(elem); 00104 } 00105 00114 protected boolean doCopyElement(RQMLFirstClass src, RQMLFirstClass dst) { 00115 return CopierFacade.getInstance().copy(getSupportedClass(), src, dst); 00116 } 00117 00118 //----------------------------------------------------------------------- 00119 // Abstract strategy methods 00120 00129 protected abstract Class getSupportedClass(); 00130 00142 protected abstract RQMLFirstClass doCreateElement(Document dest); 00143 }