/**
*
* Copyright (c) 2006-2017, Speedment, Inc. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"); You may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.speedment.runtime.core.internal.util.testing;
import com.speedment.runtime.config.identifier.TableIdentifier;
import com.speedment.runtime.core.exception.SpeedmentException;
import com.speedment.runtime.core.manager.Manager;
import com.speedment.runtime.core.manager.Persister;
import com.speedment.runtime.core.manager.Remover;
import com.speedment.runtime.core.manager.Updater;
import com.speedment.runtime.field.Field;
import java.util.function.Supplier;
import java.util.stream.Stream;
/**
*
* @author pemi
* @param <ENTITY> type
*/
public class MockManagerImpl<ENTITY> implements MockManager<ENTITY> {
private final Manager<ENTITY> inner;
private Supplier<ENTITY> entityCreator;
private Supplier<Stream<ENTITY>> streamer;
private Persister<ENTITY> persister;
private Updater<ENTITY> updater;
private Remover<ENTITY> remover;
public MockManagerImpl(Manager<ENTITY> inner) {
this.inner = inner;
// this.entityCreator = inner.entityCreator();
this.streamer = inner::stream;
this.persister = inner.persister();
this.updater = inner.updater();
this.remover = inner.remover();
}
// MockManager
// @Override
// public MockManager<ENTITY> setEntityCreator(EntityCreator<ENTITY> factory) {
// entityCreator = factory;
// return this;
// }
@Override
public MockManager<ENTITY> setStreamer(Supplier<Stream<ENTITY>> streamer) {
this.streamer = streamer;
return this;
}
@Override
public MockManager<ENTITY> setPersister(Persister<ENTITY> persister) {
this.persister = persister;
return this;
}
@Override
public MockManager<ENTITY> setUpdater(Updater<ENTITY> updater) {
this.updater = updater;
return this;
}
@Override
public MockManager<ENTITY> setRemover(Remover<ENTITY> remover) {
this.remover = remover;
return this;
}
// @Override
// public ENTITY entityCreate() {
// return entityCreator.get();
// }
//
// @Override
// public Supplier<ENTITY> entityCreator() {
// return entityCreator;
// }
@Override
public Class<ENTITY> getEntityClass() {
return inner.getEntityClass();
}
@Override
public ENTITY persist(ENTITY entity) throws SpeedmentException {
return persister.apply(entity);
}
@Override
public ENTITY update(ENTITY entity) throws SpeedmentException {
return updater.apply(entity);
}
@Override
public Persister<ENTITY> persister() {
return persister;
}
@Override
public ENTITY remove(ENTITY entity) throws SpeedmentException {
return remover.apply(entity);
}
@Override
public Remover<ENTITY> remover() {
return remover;
}
//
// @Override
// public ENTITY entityCopy(ENTITY source) {
// return inner.entityCopy(source);
// }
@Override
public TableIdentifier<ENTITY> getTableIdentifier() {
return inner.getTableIdentifier();
}
@Override
public Stream<Field<ENTITY>> fields() {
return inner.fields();
}
@Override
public Stream<Field<ENTITY>> primaryKeyFields() {
return inner.primaryKeyFields();
}
@Override
public Stream<ENTITY> stream() {
return streamer.get();
}
// @Override
// public UnaryOperator<ENTITY> entityCopier() {
// return inner.entityCopier();
// }
@Override
public Updater<ENTITY> updater() {
return updater;
}
}