private long putCachePatch( FileProtocol protocol, InputStream content, ImportBean bean, String user) throws BulkLoaderSystemException { assert protocol != null; assert content != null; assert bean != null; assert user != null; assert protocol.getKind() == FileProtocol.Kind.CREATE_CACHE || protocol.getKind() == FileProtocol.Kind.UPDATE_CACHE; CacheInfo info = protocol.getInfo(); assert info != null; ImportTargetTableBean targetTableBean = bean.getTargetTable(info.getTableName()); if (targetTableBean == null) { // 対応するテーブルの定義がDSL存在しない場合異常終了する。 throw new BulkLoaderSystemException( getClass(), "TG-EXTRACTOR-02001", MessageFormat.format("エントリに対応するテーブルの定義がDSL存在しない。テーブル名:{0}", info.getTableName())); } URI dfsFilePath = resolveLocation(bean, user, protocol.getLocation()); try (CacheStorage storage = new CacheStorage(new Configuration(), dfsFilePath)) { LOG.info( "TG-EXTRACTOR-11001", info.getId(), info.getTableName(), storage.getPatchProperties()); storage.putPatchCacheInfo(info); LOG.info( "TG-EXTRACTOR-11002", info.getId(), info.getTableName(), storage.getPatchProperties()); Class<?> targetTableModel = targetTableBean.getImportTargetType(); Path targetUri = storage.getPatchContents("0"); LOG.info("TG-EXTRACTOR-11003", info.getId(), info.getTableName(), targetUri); long recordCount = write(targetTableModel, targetUri.toUri(), content); LOG.info("TG-EXTRACTOR-11004", info.getId(), info.getTableName(), targetUri, recordCount); LOG.info( "TG-PROFILE-01002", bean.getTargetName(), bean.getBatchId(), bean.getJobflowId(), bean.getExecutionId(), info.getTableName(), recordCount); return recordCount; } catch (IOException e) { throw new BulkLoaderSystemException( e, getClass(), "TG-EXTRACTOR-11005", info.getId(), info.getTableName(), dfsFilePath); } }
private Callable<?> createCacheBuilder( FileProtocol protocol, ImportBean bean, String user, long recordCount) throws BulkLoaderSystemException { assert protocol != null; assert bean != null; assert user != null; CacheInfo info = protocol.getInfo(); URI location = resolveLocation(bean, user, protocol.getLocation()); assert info != null; try { switch (protocol.getKind()) { case CREATE_CACHE: return createCacheBuilder(CacheBuildClient.SUBCOMMAND_CREATE, bean, location, info); case UPDATE_CACHE: if (recordCount > 0) { return createCacheBuilder(CacheBuildClient.SUBCOMMAND_UPDATE, bean, location, info); } else { return null; } default: throw new AssertionError(protocol); } } catch (IOException e) { throw new BulkLoaderSystemException( e, getClass(), "TG-EXTRACTOR-12002", protocol.getKind(), info.getId(), info.getTableName(), bean.getTargetName(), bean.getBatchId(), bean.getJobflowId(), bean.getExecutionId()); } }
private void importContent( FileProtocol protocol, InputStream content, ImportBean bean, String user) throws BulkLoaderSystemException { assert protocol != null; assert content != null; assert bean != null; assert user != null; String tableName = FileNameUtil.getImportTableName(protocol.getLocation()); ImportTargetTableBean targetTableBean = bean.getTargetTable(tableName); if (targetTableBean == null) { // 対応するテーブルの定義がDSL存在しない場合異常終了する。 throw new BulkLoaderSystemException( getClass(), "TG-EXTRACTOR-02001", MessageFormat.format("エントリに対応するテーブルの定義がDSL存在しない。テーブル名:{0}", tableName)); } URI dfsFilePath = resolveLocation(bean, user, targetTableBean.getDfsFilePath()); Class<?> targetTableModel = targetTableBean.getImportTargetType(); LOG.info("TG-EXTRACTOR-02002", tableName, dfsFilePath.toString(), targetTableModel.toString()); // ファイルをジョブ入力データ領域に書き出す long recordCount = write(targetTableModel, dfsFilePath, content); LOG.info("TG-EXTRACTOR-02003", tableName, dfsFilePath.toString(), targetTableModel.toString()); LOG.info( "TG-PROFILE-01002", bean.getTargetName(), bean.getBatchId(), bean.getJobflowId(), bean.getExecutionId(), tableName, recordCount); }