Search in sources :

Example 1 with BulkloadOptions

use of org.talend.mdm.bulkload.client.BulkloadOptions 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());
            }
        }
    }
}
Also used : InputStreamReader(java.io.InputStreamReader) HashMap(java.util.HashMap) WSItem(com.amalto.workbench.webservices.WSItem) ByteArrayInputStream(java.io.ByteArrayInputStream) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) Reader(java.io.Reader) InputStreamReader(java.io.InputStreamReader) BulkloadOptions(org.talend.mdm.bulkload.client.BulkloadOptions) InputStreamMerger(org.talend.mdm.bulkload.client.InputStreamMerger) FileInputStream(java.io.FileInputStream) FileNotFoundException(java.io.FileNotFoundException) InvocationTargetException(java.lang.reflect.InvocationTargetException) DocumentException(org.dom4j.DocumentException) ByteArrayInputStream(java.io.ByteArrayInputStream) List(java.util.List) ArrayList(java.util.ArrayList) BulkloadClient(org.talend.mdm.bulkload.client.BulkloadClient)

Aggregations

WSItem (com.amalto.workbench.webservices.WSItem)1 ByteArrayInputStream (java.io.ByteArrayInputStream)1 FileInputStream (java.io.FileInputStream)1 FileNotFoundException (java.io.FileNotFoundException)1 InputStream (java.io.InputStream)1 InputStreamReader (java.io.InputStreamReader)1 Reader (java.io.Reader)1 InvocationTargetException (java.lang.reflect.InvocationTargetException)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 List (java.util.List)1 DocumentException (org.dom4j.DocumentException)1 BulkloadClient (org.talend.mdm.bulkload.client.BulkloadClient)1 BulkloadOptions (org.talend.mdm.bulkload.client.BulkloadOptions)1 InputStreamMerger (org.talend.mdm.bulkload.client.InputStreamMerger)1