public class TransactionHistoryCsvItemProcessor implements ItemStream, ItemProcessor<TransactionHistory,TransactionHistory>{
@Autowired
private TransactionHistoryRepository transactionHistoryRepository;
@Autowired
private ProductHierarchyRepository productHierarchyRepository;
@Autowired
private LocationHierarchyRepository locationHierarchyRepository;
List<TransactionHistory>list= transactionHistoryRepository.findAll();
List<String> pLevel7Products = productHierarchyRepository.getPLevel7Ids();
List<String> level5locations=locationHierarchyRepository.getLevel5Ids();
int count=1;
TransactionHistoryCsvItemProcessor(){
}
private Set<TransactionHistory> processedData = new HashSet<TransactionHistory>();
@Override
public TransactionHistory process(TransactionHistory transactionHistory) throws Exception {
TransactionHistory processedObj = new TransactionHistory();
if (pLevel7Products.contains(transactionHistory.getProductId().trim())) {
if (level5locations.contains(transactionHistory.getLocationId().trim())) {
if(list!=null&&!list.isEmpty()){
if(list.contains(transactionHistory)){
count++;
throw new MyOwnException(" duplicates data error", transactionHistory.getProductId().trim(),
transactionHistory.getLocationId().trim(), transactionHistory.getPeriodId(),
transactionHistory.getQuantity(), "at line numer ", count-1);
}
}
processedObj.setProductId(transactionHistory.getProductId().trim());
processedObj.setLocationId(transactionHistory.getLocationId().trim());
processedObj.setQuantity(transactionHistory.getQuantity());
processedObj.setPeriodId(transactionHistory.getPeriodId());
processedObj.setCreatedDate(LocalDate.now());
processedData.add(transactionHistory);
transactionHistory.setItemCount(count);
count++;
}else {
System.out.println("failed location");
count++;
transactionHistory.setItemCount(count);
throw new MyOwnException(" location data error", transactionHistory.getProductId().trim(),
transactionHistory.getLocationId().trim(), transactionHistory.getPeriodId(),
transactionHistory.getQuantity(), "at line numer ", count-1);
}
} else {
System.out.println("failed product");
// count++;
try {
transactionHistory.setItemCount(count);
throw new MyOwnException(" product data error", transactionHistory.getProductId().trim(),
transactionHistory.getLocationId().trim(), transactionHistory.getPeriodId(),
transactionHistory.getQuantity(), "at line numer ", count);
} catch (MyOwnException e) {
System.out.println("product error");
throw new MyOwnException(" product data error", transactionHistory.getProductId().trim(),
transactionHistory.getLocationId().trim(), transactionHistory.getPeriodId(),
transactionHistory.getQuantity(), "at line numer ", count);
} finally {
count++;
}
}
//}
if (processedObj.getProductId() == null && processedObj.getLocationId() == null)
return null;
else {
// processedData.add(processedObj);
return processedObj;
}
}
@Override
public void open(ExecutionContext executionContext) throws ItemStreamException {
// TODO Auto-generated method stub
//list=transactionHistoryRepository.findAll();
}
@Override
public void update(ExecutionContext executionContext) throws ItemStreamException {
// TODO Auto-generated method stub
}
@Override
public void close() throws ItemStreamException {
// TODO Auto-generated method stub
count=1;
}
}
//============================================//
@Bean
public Step transactionHistoryStep() {
return ((SimpleStepBuilder<TransactionHistory, TransactionHistory>) stepBuilderFactory.get("transactionHistoryStep")
.<TransactionHistory,TransactionHistory>chunk(10)
.reader(reader())
.processor(processor())
.writer(writer())
.stream(new TransactionHistoryCsvItemProcessor()))
.faultTolerant()
.skipPolicy(transactionHistoryCsvImportSkipPolicy)
.build();
}
@Bean
@JobScope
public FlatFileItemReader<TransactionHistory> reader() {
FlatFileItemReader<TransactionHistory> flatFileItemReader= new FlatFileItemReader<TransactionHistory>();
try {
TransactionHistoryFieldSetMapper transactionHistoryFieldSetMapper= new TransactionHistoryFieldSetMapper();
flatFileItemReader.setResource(new FileSystemResource(FileResources.mappingFileResouces("transactionHistoryImportCsvFile")));
flatFileItemReader.setName("CSV-Reader");
flatFileItemReader.setLinesToSkip(1);
flatFileItemReader.setLineMapper(new DefaultLineMapper<TransactionHistory>(){{
setLineTokenizer(new DelimitedLineTokenizer() {{
setNames("productId","locationId","periodId","quantity");
setFieldSetMapper(transactionHistoryFieldSetMapper);
}});
setFieldSetMapper(new TransactionHistoryFieldSetMapper(){{
//setTargetType(TransactionHistory.class);
}});
}});
}
catch(Exception e) {
e.printStackTrace();
logger.error("read error"+flatFileItemReader);
}
return flatFileItemReader;
}
@Bean
public ItemProcessor<TransactionHistory, TransactionHistory> processor() {
return new TransactionHistoryCsvItemProcessor();
}
//===========error ====//
Ошибка при запуске ApplicationContext. Чтобы отобразить отчет об условиях, повторно запустите приложение с включенной отладкой. 2020-май-05 22: 30: 13.654 ОШИБКА [основная] osbSpringApplication - Не удалось запустить приложение org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка при создании bean-компонента с именем 'transactionHistoryController': неудовлетворенная зависимость, выраженная через поле 'transactionHistoryCs'; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем 'transactionHistoryJob', определенным в ресурсе пути к классу [com / datalabsindia / batch / TransactionHistoryCsvImport.class]: создание экземпляра bean-компонента с помощью фабричного метода завершилось неудачно; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.batch.core.Job]: фабричный метод «transactionHistoryJob» вызвал исключение; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем 'transactionHistoryStep', определенным в ресурсе пути к классу [com / datalabsindia / batch / TransactionHistoryCsvImport.class]: создание экземпляра bean-компонента с помощью фабричного метода завершилось неудачно; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.batch.core.Step]: фабричный метод 'transactionHistoryStep' вызвал исключение; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем «процессор», определенным в ресурсе пути к классу [com / datalabsindia / batch / TransactionHistoryCsvImport.class]: создание экземпляра компонента с помощью фабричного метода не удалось; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.batch.item.ItemProcessor]: заводской метод 'processor' вызвал исключение; вложенное исключение: java .lang.NullPointerException в org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject (AutowiredAnnotationBeanPostProcessor. java: 596. InjectionMetadata. java: 90) по адресу org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties (AutowiredAnnotationBeanPostProcessor. java: 374) по адресу org.springframework.support. *: 1411) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory. java: 592) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory. в org.springframework.beans.factory.support.AbstractBeanFactory.lambda $ doGetBean $ 0 (AbstractBeanFactory. * 10 10 *: 320) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry. java: 222) в org.springframework.beans.factory.support.AbstractBeanFactory *. ) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory. java: 199) в org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons. * 10 springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext. java: 877) в org.springframework.context.support.AbstractApplicationContext.refre sh (AbstractApplicationContext.refre *1016* (AbstractApplicationContext. * 1017) или: .servlet.context.ServletWebServerApplicationContext.refre sh (ServletWebServerApplicationContext. java: 141) в org.springframework.boot.SpringApplication.refre sh (SpringApplication. java: 743) в orramegwork. ingApplication.refreshContext (SpringApplication. java: 390) в org.springframework.boot.SpringApplication.run (SpringApplication. java: 312) в org.springframework.boot.SpringApplication.run (SpringApplication. java: 1214) в org.springframework.boot.SpringApplication.run (SpringApplication. java: 1203) в com.datalabsindia.ScpApplication .main (ScpApplication. java: 21) Вызвано: org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем 'transactionHistoryJob', определенным в ресурсе пути к классу [com / datalabsindia / batch / TransactionHistoryCsvImport.class]: Bean создание экземпляра через фабричный метод не удалось; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.batch.core.Job]: фабричный метод «transactionHistoryJob» вызвал исключение; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем 'transactionHistoryStep', определенным в ресурсе пути к классу [com / datalabsindia / batch / TransactionHistoryCsvImport.class]: создание экземпляра bean-компонента с помощью фабричного метода завершилось неудачно; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.batch.core.Step]: фабричный метод 'transactionHistoryStep' вызвал исключение; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем «процессор», определенным в ресурсе пути к классу [com / datalabsindia / batch / TransactionHistoryCsvImport.class]: создание экземпляра компонента с помощью фабричного метода не удалось; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.batch.item.ItemProcessor]: заводской метод 'processor' вызвал исключение; вложенное исключение - это java .lang.NullPointerException в org.springframework.beans.factory.support.ConstructorResolver.instantiate (ConstructorResolver. java: 627) в org.springframework.beans.factory.support.ConstructorResolver. java:. 456) при org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod (AbstractAutowireCapableBeanFactory java:. 1321) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance (AbstractAutowireCapableBeanFactory java: 1160) по адресу org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory. java: 555) в org.springframework.beans.beans.factory. * Antivirus. .springframework.beans.factory.support.AbstractBeanFactory.lambda $ doGetBean $ 0 (AbstractBeanFactory. java: 320) в org.sprin gframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry. java: 222) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanfactory.doGetBean (AbstractBeanfactory.html) factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory. java: 199) в org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate (DependencyDescriptor. java: 277) в orrame.supping.framework.spring.framework.spring. DefaultListableBeanFactory.doResolveDependency (DefaultListableBeanFactory. java: 1251) в org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency (DefaultListableBeanFactory.resolveDependency (DefaultListableBeanFactory.resolveDependency (DefaultListableBeanFactory.resolveDependency). inject (AutowiredAnnotationBeanPostProcessor. java: 593) ... 19 общих кадров пропущено Причина: org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframe work.batch.core.Job]: фабричный метод transactionHistoryJob вызвал исключение; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем 'transactionHistoryStep', определенным в ресурсе пути к классу [com / datalabsindia / batch / TransactionHistoryCsvImport. class]: Не удалось создать экземпляр компонента с помощью фабричного метода; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.batch.core.Step]: фабричный метод 'transactionHistoryStep' вызвал исключение; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем «процессор», определенным в ресурсе пути к классу [com / datalabsindia / batch / TransactionHistoryCsvImport.class]: создание экземпляра компонента с помощью фабричного метода не удалось; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.batch.item.ItemProcessor]: заводской метод 'processor' вызвал исключение; вложенное исключение: java .lang.NullPointerException в org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate (SimpleInstantiationStrategy. java: 185) в org.springframework.beans.factory.support.Constructor.Instantiation.beans.factory.support.Constructor. java: 622) ... 32 общих кадра пропущены Причина: org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем 'transactionHistoryStep', определенным в ресурсе пути к классу [com / datalabsindia / batch / TransactionHistoryCsvImport.class] : Не удалось создать экземпляр компонента с помощью фабричного метода; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.batch.core.Step]: фабричный метод 'transactionHistoryStep' вызвал исключение; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем «процессор», определенным в ресурсе пути к классу [com / datalabsindia / batch / TransactionHistoryCsvImport.class]: создание экземпляра компонента с помощью фабричного метода не удалось; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.batch.item.ItemProcessor]: заводской метод 'processor' вызвал исключение; вложенное исключение: java .lang.NullPointerException в org.springframework.beans.factory.support.ConstructorResolver.instantiate (ConstructorResolver. java: 627) в org.springframework.beans.factory.support.ConstructorResolverDescription. ConstructorResolver. * * тысячу сорок-семь:. 456) при org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod (AbstractAutowireCapableBeanFactory java:. 1321) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance (AbstractAutowireCapableBeanFactory java: 1160) по адресу org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory. java: 555) в org.springframework.beans.beans.factory.AnbjectAbjectAbject (AbstractAutowireCapableBeanFactory). .springframework.beans.factory.support.AbstractBeanFactory.lambda $ doGetBean $ 0 (AbstractBeanFactory. java: 320) в org.sprin gframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry. java: 222) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.doGetBean (AbstractBeanFactory.OgetBean (AbstractBeanFactory). factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory. java: 199) по адресу org.springframework.context.annotation.ConfigurationClassEnhancer $ BeanMethodInterceptor.resolveBeanReference (ConfigurationClassEnhanceationContext.ConfigurationClassEnhancer. BeanMethodInterceptor.intercept (ConfigurationClassEnhancer. java: 366) в com.datalabsindia.batch.TransactionHistoryCsvImport $$ EnhancerBySpringCGLIB $$ 669179a6.transactionHistoryStep () в com.datalabsportImport.TransactionHistoryStep () в com.datalabsvideo. com.datalabsindia.batch.TransactionHistoryCsvImport $$ EnhancerBySpringCGLIB $$ 669179a6.CGLIB $ transactionHistoryJob $ 3 () в com.datalabsindia.batch. Транзакция .intercept (ConfigurationClassEnhancer. java: 363) по адресу com.datalabsindia.batch.TransactionHistoryCsvImport $$ EnhancerBySpringCGLIB $$ 669179a6.transactionHistoryJob () в sun.reflect.NativeMethodAccessor.Implative.invo Method Неизвестный источник) на sun.reflect.DelegatingMethodAccessorImpl.invoke (Неизвестный источник) на java .lang.reflect.Method.invoke (Неизвестный источник) на org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiation62 (SimpleInstantiationStrategy.instantiate62. *: 154) ... 33 общих кадра пропущены Причина: org.springframework.beans.BeanInstantiationException: Не удалось создать экземпляр [org.springframework.batch.core.Step]: TransactionHistoryS фабричного метода tep 'выбросил исключение; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем «процессор», определенным в ресурсе пути к классу [com / datalabsindia / batch / TransactionHistoryCsvImport.class]: создание экземпляра компонента с помощью фабричного метода не удалось; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.batch.item.ItemProcessor]: заводской метод 'processor' вызвал исключение; вложенное исключение: java .lang.NullPointerException в org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate (SimpleInstantiationStrategy. java: 185) в org.springframework.beans.factory.support.Constructor.InstantiationStrategy.beans.factory.support.Constructor. java: 622) ... 56 общих кадров пропущено Причина: org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем «процессор», определенным в ресурсе пути к классу [com / datalabsindia / batch / TransactionHistoryCsvImport.class] : Не удалось создать экземпляр компонента с помощью фабричного метода; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.batch.item.ItemProcessor]: заводской метод 'processor' вызвал исключение; вложенное исключение: java .lang.NullPointerException в org.springframework.beans.factory.support.ConstructorResolver.instantiate (ConstructorResolver. java: 627) в org.springframework.beans.factory.support.ConstructorResolverDescription. ConstructorResolver. java:. 456) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod (AbstractAutowireCapableBeanFactory java:. 1321) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance (AbstractAutowireCapableBeanFactory java: 1160) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory. java: 555) в org.springframework.beans.beans.factory. * Antivirus (аннотация) .springframework.beans.factory.support.AbstractBeanFactory.lambda $ doGetBean $ 0 (AbstractBeanFactory. java: 320) в org.sprin gframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry. java: 222) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.doGetBean (AbstractBeanFactory.OutBean) factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory. java: 199) по адресу org.springframework.context.annotation.ConfigurationClassEnhancer $ BeanMethodInterceptor.resolveBeanReference (ConfigurationClassEnassworkr. * 1077 BeanMethodInterceptor.intercept (ConfigurationClassEnhancer. java: 366) в com.datalabsindia.batch. TransactionHistoryCsvImport $$ EnhancerBySpringCGLIB $$ 669179a6.processor () в com.datalabsindia.batch.TransactionHistoryCsvImport.transactionHistoryStep (TransactionHistoryCsvImport. java: 105) в com.datalabsindia.batch. ) по адресу com.datalabsindia.batch.TransactionHistoryCsvImport $$ EnhancerBySpringCGLIB $$ 669179a6 $$ FastClassBySpringCGLIB $$ d1625b5b.invoke () в org.springframework.cglib.proxy.MetvodProxying (*) в методе .context.annotation.ConfigurationClassEnhancer $ BeanMethodInterceptor.intercept (ConfigurationClassEnhancer. java: 363) в com.datalabsindia.batch.TransactionHistoryCsvImport $$ EnhancerBySpringCGLIB 669179a. sun.reflect.NativeMethodAccessorImpl.invoke (Неизвестный источник) в sun.reflect.DelegatingMethodAccessorImpl.invoke (Неизвестный источник) в java .lang.reflect.Metho d.invoke (Неизвестный источник) в org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate (SimpleInstantiationStrategy. java: 154) ... 57 общих кадров пропущены Причина: org.springframework.beans.BeanInstantiation toException: Failed toException: instantiate [org.springframework.batch.item.ItemProcessor]: фабричный метод 'processor' вызвал исключение; вложенное исключение: java .lang.NullPointerException в org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate (SimpleInstantiationStrategy. java: 185) в org.springframework.beans.factory.support.Constructor.InstantiationStrategy.beans.factory.support.Constructor. java: 622) ... 80 общих кадров пропущено Причина: java .lang.NullPointerException: null в com.datalabsindia.batch.TransactionHistoryCsvItemProcessor. (TransactionHistoryCsvItemProcessor. java: 55) в com.datalabsindia. TransactionHistoryCsvImport.processor (TransactionHistoryCsvImport. java: 160) в com.datalabsindia.batch.TransactionHistoryCsvImport $$ EnhancerBySpringCGLIB $$ 669179a6.CGLIB $ processor $ 2 () $$ d1625b5b.invoke () в org.springframework.cglib.proxy.MethodProxy.invokeSuper (MethodProxy. java: 244) в org.springframework.context.annotation.ConfigurationClassEnhancer $ BeanMethodInterceptor.interceptor. pt (ConfigurationClassEnhancer. java: 363) в com.datalabsindia.batch.TransactionHistoryCsvImport $$ EnhancerBySpringCGLIB $$ 669179a6.processor () в sun.reflect.NativeMethodAccessorImpl.invoked.invoke0 (NativeMethodAccessorImpl.invoked) (NativeMethodAccessorImpl.invoke0 (NativeMethodAccessorImpl.invoked) (NativeMethodAccessorImpl.invoke0 (Native Method) в исходном методе) Источник) в sun.reflect.DelegatingMethodAccessorImpl.invoke (Неизвестный источник) в java .lang.reflect.Method.invoke (Неизвестный источник) в org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate (*. : 154) ... 81 общий кадр пропущен