// TODO Carregar campos a partir do XML de um .ktr @SuppressWarnings("unchecked") @Override public void loadXML( Node stepDomNode, List<DatabaseMeta> databases, Map<String, Counter> sequenceCounters) throws KettleXMLException { try { XStream xs = new XStream(new DomDriver()); StringWriter sw = new StringWriter(); Transformer t = TransformerFactory.newInstance().newTransformer(); // IPC: se algum colocar um caracter, seja qual for, no getXML() o // getFirstChild() para de funcionar aqui! t.transform( new DOMSource( XMLHandler.getSubNode(stepDomNode, Field.DATA_ROOT_NODE.name()).getFirstChild()), new StreamResult(sw)); Map<String, Object> data = (Map<String, Object>) xs.fromXML(sw.toString()); endpointUri = (String) data.get(Field.ENDPOINT_URI.name()); defaultGraph = (String) data.get(Field.DEFAULT_GRAPH.name()); queryString = (String) data.get(Field.QUERY_STRING.name()); prefixes = (List<List<String>>) data.get(Field.PREFIXES.name()); varResult = (String) data.get(Field.VAR_RESULT.name()); } catch (Throwable e) { e.printStackTrace(); } }
// Rogers (2012): Persistir campos no repositorio @Override public void saveRep(Repository repository, ObjectId idOfTransformation, ObjectId idOfStep) throws KettleException { repository.saveStepAttribute( idOfTransformation, idOfStep, Field.ENDPOINT_URI.name(), endpointUri); repository.saveStepAttribute( idOfTransformation, idOfStep, Field.DEFAULT_GRAPH.name(), defaultGraph); repository.saveStepAttribute( idOfTransformation, idOfStep, Field.QUERY_STRING.name(), queryString); repository.saveStepAttribute( idOfTransformation, idOfStep, Field.PREFIXES.name(), new XStream().toXML(prefixes)); repository.saveStepAttribute(idOfTransformation, idOfStep, Field.VAR_RESULT.name(), varResult); }
// TODO Gerar XML para salvar um .ktr @Override public String getXML() throws KettleException { XStream xs = new XStream(); Map<String, Object> data = new TreeMap<String, Object>(); data.put(Field.ENDPOINT_URI.name(), endpointUri); data.put(Field.DEFAULT_GRAPH.name(), defaultGraph); data.put(Field.QUERY_STRING.name(), queryString); data.put(Field.PREFIXES.name(), prefixes); data.put(Field.VAR_RESULT.name(), varResult); return String.format("<%1$s>%2$s</%1$s>", Field.DATA_ROOT_NODE.name(), xs.toXML(data)); }
// Rogers (2012): Carregar campos a partir do repositorio @SuppressWarnings("unchecked") @Override public void readRep( Repository repository, ObjectId stepIdInRepository, List<DatabaseMeta> databases, Map<String, Counter> sequenceCounters) throws KettleException { endpointUri = repository.getStepAttributeString(stepIdInRepository, Field.ENDPOINT_URI.name()); defaultGraph = repository.getStepAttributeString(stepIdInRepository, Field.DEFAULT_GRAPH.name()); queryString = repository.getStepAttributeString(stepIdInRepository, Field.QUERY_STRING.name()); prefixes = (List<List<String>>) new XStream() .fromXML( repository.getStepAttributeString(stepIdInRepository, Field.PREFIXES.name())); varResult = repository.getStepAttributeString(stepIdInRepository, Field.VAR_RESULT.name()); }