import
java.util.List;
import
java.util.Optional;
import
java.util.concurrent.ExecutionException;
import
java.util.concurrent.Future;
import
org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service;
@Service
(
"contestQueryService"
)
public
class
ContestQueryService {
@Autowired
private
ContestRepositoryWithQuery contestRepositoryWithQuery;
public
void
test() {
Contest geekContest =
new
Contest();
geekContest.setContestName(
"PremierLeague"
);
geekContest.setContestDescription(
"Inviting Geeks To submit articles in plenty"
);
contestRepositoryWithQuery.save(geekContest);
Contest hackthoContest =
new
Contest();
hackthoContest.setContestName(
"Hackathon"
);
hackthoContest.setContestDescription(
"Coding Round Challenge"
);
contestRepositoryWithQuery.save(hackthoContest);
Optional<Contest> result = contestRepositoryWithQuery.findById(1L);
result.ifPresent(contest -> System.out.println(contest));
Optional<Contest> result1 = contestRepositoryWithQuery.findByContestNameAndId(
"PremierLeague"
,6L);
result1.ifPresent(contest -> System.out.println(
"Searched for PremierLeague.."
+ contest));
Optional<Contest> namedQueryResult = contestRepositoryWithQuery.findByNamedParameter(
"PremierLeague"
,6L);
namedQueryResult.ifPresent(contest -> System.out.println(
"Searched for PremierLeague.."
+ contest));
List<Contest> contests = contestRepositoryWithQuery.findByContestName(
"Hackathon"
);
contests.forEach(contest -> System.out.println(
"Searched for Hackathon.."
+ contest));
Iterable<Contest> iterator = contestRepositoryWithQuery.findAll();
iterator.forEach(contest -> System.out.println(contest));
long
countOfContest = contestRepositoryWithQuery.count();
System.out.println(
"Number of contest held: "
+ countOfContest);
Future<Contest> resultAsync = contestRepositoryWithQuery.findContest1ById(6L);
try
{
System.out.println(
"Async way of getting contestname.."
+ resultAsync.get().getContestName());
}
catch
(InterruptedException e1) {
e1.printStackTrace();
}
catch
(ExecutionException e1) {
e1.printStackTrace();
}
Future<Optional<Contest>> hackathonAsyncResult = contestRepositoryWithQuery.findContest2ById(7L);
result.ifPresent(hackathonContest -> System.out.println(hackathonContest));
Future<Contest> asyncContest = contestRepositoryWithQuery.findContestAsyncByContestName(
"Hackathon"
);
try
{
System.out.println(
"contestname retrieval in async way .."
+ asyncContest.get().getContestName());
}
catch
(InterruptedException e) {
e.printStackTrace();
}
catch
(ExecutionException e) {
e.printStackTrace();
}
Future<Optional<String>> contestDetails = contestRepositoryWithQuery.findContestById(10L);
Future<String> contestString = contestRepositoryWithQuery.findContestAsyncById(10L);
System.out.println(contestString);
}
}