/*
* Copyright 2012 LinkedIn, Inc
*
* 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.linkedin.parseq.example.domain;
import java.util.List;
import com.linkedin.parseq.Task;
import com.linkedin.parseq.example.common.AbstractExample;
import com.linkedin.parseq.example.common.ExampleUtil;
import com.linkedin.parseq.example.common.MockService;
public abstract class AbstractDomainExample extends AbstractExample {
protected MockService<Person> personService;
protected MockService<Company> companyService;
protected MockService<Message> messageService;
protected MockService<List<Integer>> mailboxService;
private final boolean _useBatching;
public AbstractDomainExample(boolean useBatching) {
_useBatching = useBatching;
}
@Override
protected <T> MockService<T> getService() {
if (_useBatching) {
return getBatchableService();
} else {
return super.getService();
}
}
public Task<Person> fetchPerson(int id) {
if (personService == null) {
personService = getService();
}
return ExampleUtil.fetch("Person", personService, id, DB.personDB);
}
public Task<Company> fetchCompany(int id) {
if (companyService == null) {
companyService = getService();
}
return ExampleUtil.fetch("Company", companyService, id, DB.companyDB);
}
public Task<Message> fetchMessage(int id) {
if (messageService == null) {
messageService = getService();
}
return ExampleUtil.fetch("Message", messageService, id, DB.messageDB);
}
public Task<List<Integer>> fetchMailbox(int id) {
if (mailboxService == null) {
mailboxService = getService();
}
return ExampleUtil.fetch("Mailbox", mailboxService, id, DB.mailboxDB);
}
}