use of org.talend.mdm.bulkload.client.BulkloadClient in project tmdm-studio-se by Talend.
the class ImportItemsWizard method importClusterContents.
protected void importClusterContents(TreeObject item, TMDMService port, HashMap<String, String> picturePathMap) throws Exception {
if (dataClusterContent.containsKey(item.getDisplayName())) {
Reader reader = null;
String[] paths = dataClusterContent.get(item.getDisplayName());
Map<String, List<String>> conceptMap = new HashMap<String, List<String>>();
for (String path : paths) {
try {
// $NON-NLS-1$//$NON-NLS-2$
reader = new InputStreamReader(new FileInputStream(importFolder + "/" + path), "UTF-8");
WSItem wsItem = (WSItem) Unmarshaller.unmarshal(WSItem.class, reader);
String key = // $NON-NLS-1$//$NON-NLS-2$
wsItem.getWsDataClusterPK().getPk() + "##" + wsItem.getConceptName() + "##" + wsItem.getDataModelName();
List<String> list = null;
list = conceptMap.get(key);
if (list == null) {
list = new ArrayList<String>();
conceptMap.put(key, list);
}
// ymli; fix 0016875: set the right path of picture when import pictures
String content = wsItem.getContent();
boolean isUpdate = false;
for (String picturekey : picturePathMap.keySet()) {
// $NON-NLS-1$
String fileName = picturekey.substring(picturekey.indexOf("-") + 1);
if (content.contains(fileName)) {
String targetPicturePath = picturePathMap.get(picturekey);
content = updatePicturePath(content, picturekey, targetPicturePath);
isUpdate = true;
list.add(content);
conceptMap.put(key, list);
}
}
if (!isUpdate) {
list.add(content);
}
} catch (Exception e1) {
log.error(e1.getMessage(), e1);
} finally {
try {
if (reader != null) {
reader.close();
}
} catch (Exception e) {
}
}
}
// store the items to db using bulkloadclient
// $NON-NLS-1$
String url = item.getEndpointIpAddress() + "/datamanager/loadServlet";
for (Entry<String, List<String>> entry : conceptMap.entrySet()) {
// $NON-NLS-1$
String[] keys = entry.getKey().split("##");
String cluster = keys[0];
String concept = keys[1];
String datamodel = keys[2];
BulkloadClient bulkloadClient = new BulkloadClient(url, item.getUsername(), item.getPassword(), null, cluster, concept, datamodel);
bulkloadClient.setOptions(new BulkloadOptions(false, false, 500));
StringBuffer sb = new StringBuffer();
for (String xml : entry.getValue()) {
// $NON-NLS-1$
sb.append(xml).append("\n");
}
try {
InputStreamMerger manager = bulkloadClient.load();
InputStream bin = new ByteArrayInputStream(sb.toString().getBytes(Messages.ImportItemsWizard_29));
manager.push(bin);
// bulkloadClient.load(sb.toString());
manager.close();
} catch (Exception e) {
// " in Data Container: "+cluster + " Error --> "+e.getLocalizedMessage());
throw new Exception(Messages.ImportItemsWizard_30 + concept + Messages.ImportItemsWizard_31 + cluster + Messages.ImportItemsWizard_32 + e.getLocalizedMessage());
}
}
}
}
Aggregations