package de.plushnikov.intellij.plugin.action.delombok;
import de.plushnikov.intellij.plugin.processor.clazz.DataProcessor;
import de.plushnikov.intellij.plugin.processor.clazz.EqualsAndHashCodeProcessor;
import de.plushnikov.intellij.plugin.processor.clazz.GetterProcessor;
import de.plushnikov.intellij.plugin.processor.clazz.SetterProcessor;
import de.plushnikov.intellij.plugin.processor.clazz.ToStringProcessor;
import de.plushnikov.intellij.plugin.processor.clazz.ValueProcessor;
import de.plushnikov.intellij.plugin.processor.clazz.WitherProcessor;
import de.plushnikov.intellij.plugin.processor.clazz.builder.BuilderClassProcessor;
import de.plushnikov.intellij.plugin.processor.clazz.builder.BuilderPreDefinedInnerClassFieldProcessor;
import de.plushnikov.intellij.plugin.processor.clazz.builder.BuilderPreDefinedInnerClassMethodProcessor;
import de.plushnikov.intellij.plugin.processor.clazz.builder.BuilderProcessor;
import de.plushnikov.intellij.plugin.processor.clazz.constructor.AllArgsConstructorProcessor;
import de.plushnikov.intellij.plugin.processor.clazz.constructor.NoArgsConstructorProcessor;
import de.plushnikov.intellij.plugin.processor.clazz.constructor.RequiredArgsConstructorProcessor;
import de.plushnikov.intellij.plugin.processor.clazz.log.CommonsLogProcessor;
import de.plushnikov.intellij.plugin.processor.clazz.log.JBossLogProcessor;
import de.plushnikov.intellij.plugin.processor.clazz.log.Log4j2Processor;
import de.plushnikov.intellij.plugin.processor.clazz.log.Log4jProcessor;
import de.plushnikov.intellij.plugin.processor.clazz.log.LogProcessor;
import de.plushnikov.intellij.plugin.processor.clazz.log.Slf4jProcessor;
import de.plushnikov.intellij.plugin.processor.clazz.log.XSlf4jProcessor;
import de.plushnikov.intellij.plugin.processor.field.DelegateFieldProcessor;
import de.plushnikov.intellij.plugin.processor.field.GetterFieldProcessor;
import de.plushnikov.intellij.plugin.processor.field.SetterFieldProcessor;
import de.plushnikov.intellij.plugin.processor.field.WitherFieldProcessor;
import de.plushnikov.intellij.plugin.processor.handler.BuilderHandler;
import de.plushnikov.intellij.plugin.processor.handler.DelegateHandler;
import de.plushnikov.intellij.plugin.processor.method.BuilderClassMethodProcessor;
import de.plushnikov.intellij.plugin.processor.method.BuilderMethodProcessor;
import de.plushnikov.intellij.plugin.processor.method.DelegateMethodProcessor;
public class DelombokEverythingAction extends BaseDelombokAction {
public DelombokEverythingAction() {
super(createHandler());
}
private static BaseDelombokHandler createHandler() {
final GetterFieldProcessor getterFieldProcessor = new GetterFieldProcessor();
final GetterProcessor getterProcessor = new GetterProcessor(getterFieldProcessor);
final SetterFieldProcessor setterFieldProcessor = new SetterFieldProcessor();
final SetterProcessor setterProcessor = new SetterProcessor(setterFieldProcessor);
final EqualsAndHashCodeProcessor equalsAndHashCodeProcessor = new EqualsAndHashCodeProcessor();
final ToStringProcessor toStringProcessor = new ToStringProcessor();
final RequiredArgsConstructorProcessor requiredArgsConstructorProcessor = new RequiredArgsConstructorProcessor();
final AllArgsConstructorProcessor allArgsConstructorProcessor = new AllArgsConstructorProcessor();
final NoArgsConstructorProcessor noArgsConstructorProcessor = new NoArgsConstructorProcessor();
final DelegateHandler delegateHandler = new DelegateHandler();
final BuilderHandler builderHandler = new BuilderHandler(toStringProcessor, noArgsConstructorProcessor);
return new BaseDelombokHandler(true,
requiredArgsConstructorProcessor, allArgsConstructorProcessor, noArgsConstructorProcessor,
new DataProcessor(getterProcessor, setterProcessor, equalsAndHashCodeProcessor, toStringProcessor, requiredArgsConstructorProcessor),
getterProcessor, new ValueProcessor(getterProcessor, equalsAndHashCodeProcessor, toStringProcessor, allArgsConstructorProcessor),
new WitherProcessor(new WitherFieldProcessor(requiredArgsConstructorProcessor)),
setterProcessor, equalsAndHashCodeProcessor, toStringProcessor,
new CommonsLogProcessor(), new JBossLogProcessor(), new Log4jProcessor(), new Log4j2Processor(), new LogProcessor(), new Slf4jProcessor(), new XSlf4jProcessor(),
getterFieldProcessor, setterFieldProcessor,
new WitherFieldProcessor(requiredArgsConstructorProcessor),
new DelegateFieldProcessor(delegateHandler),
new DelegateMethodProcessor(delegateHandler),
new BuilderPreDefinedInnerClassFieldProcessor(builderHandler),
new BuilderPreDefinedInnerClassMethodProcessor(builderHandler),
new BuilderClassProcessor(builderHandler), new BuilderClassMethodProcessor(builderHandler),
new BuilderMethodProcessor(builderHandler), new BuilderProcessor(allArgsConstructorProcessor, builderHandler));
}
}