2020-09-20 04:30发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我们有5.7。 平台和我们的data/media/impex文件夹以指数方式填充硬盘。 有人遇到过同样的问题吗?
确实,我遇到了问题,所以我实现了自己的impex导入器。 这样,我可以使用该属性来避免创建大量媒体:
import java.io.File; 导入java.io.FileInputStream; 导入java.io.InputStream; 导入org.apache.log4j.Logger; 导入de.hybris.platform.impex.jalo.ImpExException; 导入de.hybris.platform.jalo.JaloSession; 导入de.hybris.platform.servicelayer.impex.ImportConfig; 导入de.hybris.platform.servicelayer.impex.ImportResult; 导入de.hybris.platform.servicelayer.impex.ImportService; 导入de.hybris.platform.servicelayer.impex.impl.StreamBasedImpExResource; 导入de.hybris.platform.servicelayer.model.ModelService; 导入de.hybris.platform.util.CoreImpExConstants; /** * {@link SetupImpexService}的默认实现。 */ 公共类CustomSetupImpexService { 私有String fileEncoding; 私有字符串impexExt; 私有静态最终Logger LOG = Logger.getLogger(CustomSetupImpexService.class); 公共CustomSetupImpexService() { this.fileEncoding =" UTF-8"; this.impexExt =" .impex"; } 受保护的字符串getFileEncoding() { 返回this.fileEncoding; } 公共无效setFileEncoding(最终字符串fileEncoding) { this.fileEncoding = fileEncoding; } 受保护的字符串getImpexExt() { 返回this.impexExt; } 公共无效setImpexExt(最终字符串impexExt) { this.impexExt = impexExt; } //服务 私有ModelService modelService; 私有ImportService importService; 公共ModelService getModelService() { 返回modelService; } 公共无效setModelService(最终ModelService modelService) { this.modelService = modelService; } 公共ImportService getImportService() { 返回importService; } 公共无效setImportService(ImportService importService) { this.importService = importService; } @Override public void importImpexFileWithException(最终的字符串文件,最终的布尔型errorIfMissing)引发异常 { importImpexFileWithException(file,errorIfMissing,false); } @Override public void importImpexFileWithException(最终的字符串文件,最终的布尔型错误IfMissing,最终的布尔型legacyMode)抛出异常 { 如果(!new File(file).exists()) { //检查是否是相对资源路径 尝试(InputStream inputStream = Thread.currentThread()。getContextClassLoader()。getResourceAsStream(file)) { 如果(inputStream == null) { 如果(errorIfMissing) { LOG.error("正在导入[" +文件+"] ...错误(文件丢失)",null); } 其他 { LOG.info("正在导入[" +文件+"] ...跳过(未找到可选文件)"); } 抛出新的ImpExException("文件丢失:" +文件); } 其他 { JaloSession.getCurrentSession()。setAttribute(CoreImpExConstants.CTX_DONT_CHANGE_EXISTING_LINKS,Boolean.FALSE); this.importImpexFileWithExceptionAndCleanMedia(file,inputStream,legacyMode); } } } 其他 { JaloSession.getCurrentSession()。setAttribute(CoreImpExConstants.CTX_DONT_CHANGE_EXISTING_LINKS,Boolean.FALSE); 试试(最终FileInputStream fis = new FileInputStream(file)) { this.importImpexFileWithExceptionAndCleanMedia(file,fis,legacyMode); } } } public void importImpexFileWithExceptionAndCleanMedia(最终字符串文件,最终InputStream流,最终boolean legacyMode)引发异常 { 字符串消息="正在导入[" +文件+"] ..."; LOG.info(消息); 最终ImportConfig importConfig = new ImportConfig(); importConfig.setScript(new StreamBasedImpExResource(stream,getFileEncoding())); importConfig.setLegacyMode(Boolean.valueOf(legacyMode)); //在导入后使用该命令删除Impex Media importConfig.setRemoveOnSuccess(true); importConfig.getScript()。getMedia()。setRemoveOnSuccess(true); 最终ImportResult importResult = getImportService()。importData(importConfig); 如果(importResult.isError()) { 消息+ ="失败"; 如果(null!= importResult.getUnresolvedLines()) { message =" Impex错误原因:" + importResult.getUnresolvedLines()。getDescription(); } LOG.error(消息); 抛出新的ImpExException(message); } 否则if(importConfig.getScript()。getMedia()!= null && importConfig.getScript()。getMedia()。isRemoveOnSuccess()) { modelService.remove(importConfig.getScript()。getMedia()); } } }
人们,请查看ImpExMedia类型上的" removeOnSuccess"标志。 它不仅负责删除模型本身,还负责删除impex媒体文件夹中文件系统上的文件。 如果您创建了拦截器(例如:ImpExMediaInitDefaultsInterceptor)并设置了
setRemoveOnSuccess(真)
然后将ImpExMedia从数据库和文件系统上的impex媒体文件夹中删除。
最多设置5个标签!
确实,我遇到了问题,所以我实现了自己的impex导入器。 这样,我可以使用该属性来避免创建大量媒体:
人们,请查看ImpExMedia类型上的" removeOnSuccess"标志。 它不仅负责删除模型本身,还负责删除impex媒体文件夹中文件系统上的文件。 如果您创建了拦截器(例如:ImpExMediaInitDefaultsInterceptor)并设置了
然后将ImpExMedia从数据库和文件系统上的impex媒体文件夹中删除。
一周热门 更多>