Search in sources :

Example 1 with InputStreamMerger

use of org.talend.mdm.bulkload.client.InputStreamMerger 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