package sk.stuba.fiit.perconik.activity.serializers.refactor;
import org.eclipse.jdt.core.refactoring.descriptors.JavaRefactoringDescriptor;
import org.eclipse.ltk.core.refactoring.RefactoringDescriptor;
import org.eclipse.ltk.core.refactoring.resource.DeleteResourcesDescriptor;
import org.eclipse.ltk.core.refactoring.resource.MoveResourcesDescriptor;
import org.eclipse.ltk.core.refactoring.resource.RenameResourceDescriptor;
import sk.stuba.fiit.perconik.activity.serializers.AbstractConfigurableMultiSerializer;
import sk.stuba.fiit.perconik.data.content.StructuredContent;
import static sk.stuba.fiit.perconik.activity.serializers.Serializations.putObjectIdentity;
import static sk.stuba.fiit.perconik.activity.serializers.refactor.DeleteResourcesDescriptorSerializer.putDeleteResourcesDescriptor;
import static sk.stuba.fiit.perconik.activity.serializers.refactor.JavaRefactoringDescriptorSerializer.putJavaRefactoringDescriptor;
import static sk.stuba.fiit.perconik.activity.serializers.refactor.MoveResourcesDescriptorSerializer.putMoveResourcesDescriptor;
import static sk.stuba.fiit.perconik.activity.serializers.refactor.RefactoringDescriptorSerializer.putRefactoringDescriptor;
import static sk.stuba.fiit.perconik.activity.serializers.refactor.RenameResourceDescriptorSerializer.putRenameResourceDescriptor;
abstract class AbstractRefactoringDescriptorSerializer<T extends RefactoringDescriptor> extends AbstractConfigurableMultiSerializer<T> {
AbstractRefactoringDescriptorSerializer(final Option ... options) {
super(options);
}
AbstractRefactoringDescriptorSerializer(final Iterable<Option> options) {
super(options);
}
@Override
protected final void put(final StructuredContent content, final T descriptor) {
putObjectIdentity(content, descriptor);
putRefactoringDescriptor(content, descriptor);
if (descriptor instanceof MoveResourcesDescriptor) {
putMoveResourcesDescriptor(content, (MoveResourcesDescriptor) descriptor, this.options);
}
if (descriptor instanceof RenameResourceDescriptor) {
putRenameResourceDescriptor(content, (RenameResourceDescriptor) descriptor, this.options);
}
if (descriptor instanceof DeleteResourcesDescriptor) {
putDeleteResourcesDescriptor(content, (DeleteResourcesDescriptor) descriptor, this.options);
}
if (descriptor instanceof JavaRefactoringDescriptor) {
putJavaRefactoringDescriptor(content, (JavaRefactoringDescriptor) descriptor, this.options);
}
}
}