Can this first C# Code get converted to Java?
C# Example
IService.cs
namespace WcfService1
{
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.
[ServiceContract]
public interface IService1
{
[OperationContract]
PersonsList GetPersons();
[OperationContract]
List<Person> GetPerson(string search);
// TODO: Add your service operations here
}
// Use a data contract as illustrated in the sample below to add composite types to service operations.
[DataContract]
[XmlRootAttribute("Persons")]
[Serializable]
public class PersonsList
{
[DataMember]
[XmlElement("Person")]
public List<Person> personList { get; set; }
}
[DataContract]
[Serializable]
public class Person {
[DataMember]
[XmlElement("Name")]
public string name { get; set; }
[DataMember]
[XmlElement("Surname")]
public string surname { get; set; }
[DataMember]
[XmlElement("City")]
public string city { get; set; }
}
}
Service1.svc.cs
namespace WcfService1
{
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in code, svc and config file together.
// NOTE: In order to launch WCF Test Client for testing this service, please select Service1.svc or Service1.svc.cs at the Solution Explorer and start debugging.
public class Service1 : IService1
{
PersonsList persons = null;
public Service1()
{
using(TextReader reader = new StreamReader(AppDomain.CurrentDomain.BaseDirectory + "/persons.xml"))
{
XmlSerializer serializer = new XmlSerializer(typeof(PersonsList));
persons = (PersonsList)serializer.Deserialize(reader);
}
}
public List<Person> GetPerson(string search)
{
return (from p in persons.personList where p.city.IndexOf(search, StringComparison.OrdinalIgnoreCase) >= 0 ||
p.name.IndexOf(search, StringComparison.OrdinalIgnoreCase) >= 0 ||
p.surname.IndexOf(search, StringComparison.OrdinalIgnoreCase) >= 0
select p).ToList();
}
public PersonsList GetPersons()
{
return persons;
}
}
}
MainWindow.xaml
<Window x:Class="WpfLINQ_BSP.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfLINQ_BSP"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<DataGrid x:Name="grid" HorizontalAlignment="Left" Height="271" VerticalAlignment="Top" Width="532" Margin="53,94,0,0" ItemsSource="{Binding}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Path=name}" />
<DataGridTextColumn Header="Surname" Binding="{Binding Path=surname}"/>
<DataGridTextColumn Header="City" Binding="{Binding Path=city}"/>
</DataGrid.Columns>
</DataGrid>
<TextBox x:Name="textBox1" HorizontalAlignment="Left" Height="30" Margin="120,59,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="152" TextChanged="textBox1_TextChanged"/>
<Label Content="Search" HorizontalAlignment="Left" Margin="53,63,0,0" VerticalAlignment="Top"/>
</Grid>
</Window>
MainWindow.xaml.cs
namespace WpfLINQ_BSP
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
ServiceReference1.IService1 service;
ObservableCollection<ServiceReference1.Person> p;
public MainWindow()
{
service = new ServiceReference1.Service1Client();
p = new ObservableCollection<ServiceReference1.Person>(service.GetPersons().personList);
InitializeComponent();
grid.DataContext = p;
}
private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
{
p.Clear();
service.GetPerson(textBox1.Text).ToList().ForEach(p.Add);
}
}
}
CLIENT
xjc -d src -p at.htl.perg.model note.xsd
public class EmployeeClient {
public static void main(String[] args) {
EmployeeClient employeeClient = new EmployeeClient();
Scanner scan = new Scanner(System.in);
String input;
int id;
System.out.println("Was möchtest du tun (Employees,Emlpoyee,Logbookentry)?");
while (!(input = scan.nextLine()).toLowerCase().equals("abbruch")){
switch (input.toLowerCase()){
case "employees":
for(Employee e : employeeClient.getAllEmployees().getEmployee()){
System.out.println(e.toString());
}
System.out.println("Was möchtest du tun (Employees,Emlpoyee,Logbookentry)?");
break;
case "employee":
System.out.print("ID: ");
id = scan.nextInt();
scan.nextLine();
System.out.println(employeeClient.getEmployee(id));
System.out.println("Was möchtest du tun (Employees,Emlpoyee,Logbookentry)?");
break;
case "logbookentry":
System.out.print("ID: ");
id = scan.nextInt();
scan.nextLine();
System.out.print("Filter: ");
String timefilter= scan.nextLine();
employeeClient.getAllLogbookentriesFiltered(id, timefilter).getLogbookEntry().forEach(logbookEntry -> {
System.out.println(logbookEntry);
});
case "abbruch":
System.out.println("Was möchtest du tun (Employees,Emlpoyee,Logbookentry)?");
break;
default:
System.out.println("Dieser Befehl existiert nicht!");
}
};
}
public static Employees getAllEmployees(){
ClientResource cr = new ClientResource("http://localhost:8888/api/employee");
EmployeesResource empsr = cr.wrap(EmployeesResource.class);
return empsr.readAll();
}
public static Employee getEmployee(Integer id){
ClientResource cr = new ClientResource("http://localhost:8888/api/employee/"+id);
EmployeeResource empr = cr.wrap(EmployeeResource.class);
return empr.read();
}
public static Employee getAllLogbookentries(Integer id){
ClientResource cr = new ClientResource("http://localhost:8888/api/employee/"+id+"/logbookentry");
LogBookEntryResource ler = cr.wrap(LogBookEntryResource.class);
return ler.readAll();
}
public static Employee getAllLogbookentriesFiltered(Integer id, String cal){
ClientResource cr = new ClientResource("http://localhost:8888/api/employee/"+id+"/logbookentry/"+cal);
LogBookEntryResource ler = cr.wrap(LogBookEntryResource.class);
return ler.readAll();
}
public static void editEmployee(Employee employee){
ClientResource cr = new ClientResource("http://localhost:8888/api/employee/"+employee.getId());
EmployeeResource empr = cr.wrap(EmployeeResource.class);
empr.update(employee);
}
public static void addLogbookentry(Integer id, LogbookEntry logbookEntry){
ClientResource cr = new ClientResource("http://localhost:8888/api/employee/"+id+"/logbookentry");
LogBookEntryResource ler = cr.wrap(LogBookEntryResource.class);
ler.create(logbookEntry);
}
public void addEmployee(Employee e){
ClientResource clientResource = new ClientResource("http://localhost:6969/api/employees");
EmployeesResource employeesResource = clientResource.wrap(EmployeesResource.class);
employeesResource.add(e);
}
}
@WebServlet(urlPatterns = "/listEmployeeServlet")
public class ListEmployeeServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Employees employees = EmployeeClient.getAllEmployees();
req.setAttribute("emps", employees);
RequestDispatcher requestDispatcher = req.getRequestDispatcher("listEmployees.jsp");
requestDispatcher.forward(req, resp);
}
}
@WebServlet(urlPatterns = "/editEmp")
public class EditEmployeeServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
int id = Integer.parseInt(req.getParameter("empId"));
Employee employee = EmployeeClient.getEmployee(id);
Employee logBookEntries;
if(req.getParameter("filter") == null || req.getParameter("filter").equals("")){
logBookEntries = EmployeeClient.getAllLogbookentries(id);
} else {
logBookEntries = EmployeeClient.getAllLogbookentriesFiltered(id, req.getParameter("filter")+":00");
req.setAttribute("filter", req.getAttribute("filter"));
}
req.setAttribute("logBookEntries", logBookEntries);
req.setAttribute("emp", employee);
RequestDispatcher requestDispatcher = req.getRequestDispatcher("editEmployee.jsp");
requestDispatcher.forward(req, resp);
}
}
@WebServlet(urlPatterns = "/updateEmployee")
public class UpdateEmployeeServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
int id = Integer.parseInt(req.getParameter("id"));
String fname = req.getParameter("fname");
String lname = req.getParameter("lname");
String birth = req.getParameter("birth");
Employee e = EmployeeClient.getEmployee(id);
e.setFirstname(fname);
e.setLastname(lname);
e.setDateOfBirth(birth);
EmployeeClient.editEmployee(e);
req.setAttribute("emps", EmployeeClient.getAllEmployees());
RequestDispatcher requestDispatcher = req.getRequestDispatcher("listEmployees.jsp");
requestDispatcher.forward(req,resp);
}
}
@WebServlet(urlPatterns = "/addLogBookEntry")
public class AddLogBookEntryServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Employee employee = EmployeeClient.getEmployee(Integer.parseInt(req.getParameter("id2")));
req.setAttribute("emp", employee);
RequestDispatcher requestDispatcher = req.getRequestDispatcher("addLogBookEntry.jsp");
requestDispatcher.forward(req, resp);
}
}
@WebServlet(urlPatterns = "/saveLogBookEntry")
public class SaveLogBookEntryServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
int id=Integer.parseInt(req.getParameter("id"));
XMLGregorianCalendar start=XMLGregorianCalendarImpl.parse(req.getParameter("starttime")+":00");
XMLGregorianCalendar end=XMLGregorianCalendarImpl.parse(req.getParameter("endtime")+":00");
String activity= req.getParameter("activity");
LogbookEntry l=new LogbookEntry();
l.setActivity(activity);
l.setEndTime(end);
l.setStartTime(start);
EmployeeClient.addLogbookentry(id,l);
Employee logBookEntries;
if(req.getAttribute("filter") == null || req.getParameter("filter").equals("")){
logBookEntries = EmployeeClient.getAllLogbookentries(id);
} else {
logBookEntries = EmployeeClient.getAllLogbookentriesFiltered(id, req.getParameter("filter"));
req.setAttribute("filter", req.getAttribute("filter"));
}
req.setAttribute("logBookEntries", logBookEntries);
Employee emp = EmployeeClient.getEmployee(id);
req.setAttribute("emp",emp);
RequestDispatcher requestDispatcher=req.getRequestDispatcher("editEmployee.jsp");
requestDispatcher.forward(req,resp);
}
}
INTERFACES
public interface EmployeeResource {
@Get
public Employee read();
@Put
public void update(Employee e);
}
public interface EmployeesResource {
@Get("xml")
public Employees readAll();
@Post
public void add(Employee e);
}
public interface LogBookEntryResource {
@Get
public Employee readAll();
@Post("xml")
public void create(LogbookEntry l);
}
MODEL
public class Model {
private static final String XML_PATH = "data.xml";
private static Model instance;
private Employees employees;
private Model(){
JAXBContext jaxbContext = null;
try {
jaxbContext = JAXBContext.newInstance(Employees.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
this.employees = (Employees) jaxbUnmarshaller.unmarshal(new File(XML_PATH));
}catch (JAXBException e){
e.printStackTrace();
}
}
public static Model getInstance(){
if(instance == null){
instance = new Model();
}
return instance;
}
public Employees getEmployees(){
return employees;
}
public void save(){
JAXBContext jaxbContext = null;
try {
jaxbContext = JAXBContext.newInstance(Employees.class);
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.marshal(employees, new File(XML_PATH));
} catch (JAXBException e) {
e.printStackTrace();
}
}
}
SERVER
public class EmployeeServer {
public static void main(String[] args) throws Exception {
Component comp=new Component();
comp.getServers().add(Protocol.HTTP,8888);
comp.getDefaultHost().attach("/api",new EmployeeApp());
comp.start();
}
}
APP
public class EmployeeApp extends Application {
@Override
public Restlet createInboundRoot(){
Router r = new Router();
r.attach("/employee" , EmployeesServerResource.class);
r.attach("/employee/{id}",EmployeeServerResource.class);
r.attach("/employee/{id}/logbookentry/{filter}",LogBookEntryServerResource.class);
r.attach("/employee/{id}/logbookentry",LogBookEntryServerResource.class);
return r;
}
}
public class EmployeeServerResource extends ServerResource implements EmployeeResource {
@Override
public Employee read() {
for (Employee employee : Model.getInstance().getEmployees().getEmployee()) {
if(employee.getId() == Integer.parseInt((String)getRequestAttributes().get("id"))){
return employee;
}
}
return null;
}
@Override
public void update(Employee e) {
List<Employee> emps = Model.getInstance().getEmployees().getEmployee();
for(int i = 0;i<emps.size();i++){
if(emps.get(i).getId().equals(e.getId())){
emps.set(i,e);
Model.getInstance().save();
return;
}
}
}
}
public class EmployeesServerResource extends ServerResource implements EmployeesResource {
@Override
public Employees readAll() {
return Model.getInstance().getEmployees();
}
@Override
public void add(Employee e) {
Model.getInstance().getEmployees().getEmployee().add(e);
}
}
public class LogBookEntryServerResource extends ServerResource implements LogBookEntryResource {
@Override
public Employee readAll() {
Employee e = null;
for (Employee employee : Model.getInstance().getEmployees().getEmployee()) {
if(employee.getId().toString().equals(getRequestAttributes().get("id"))){
e = employee;
break;
}
}
if(e!=null){
Employee retVal = new Employee();
if(this.getRequestAttributes().get("filter")==null || this.getRequestAttributes().get("filter").equals("")){
retVal.getLogbookEntry().addAll(e.getLogbookEntry());
return retVal;
}
List<LogbookEntry> filteredLog = new ArrayList<>();
for (LogbookEntry entry : e.getLogbookEntry()) {
if(entry.getEndTime().compare(XMLGregorianCalendarImpl.parse(this.getRequestAttributes().get("filter").toString()))==1){
filteredLog.add(entry);
}
}
retVal.getLogbookEntry().addAll(filteredLog);
return retVal;
}
return null;
}
@Override
public void create(LogbookEntry logbookEntry) {
for (Employee employee : Model.getInstance().getEmployees().getEmployee()) {
if(employee.getId().equals(Integer.parseInt(getRequestAttributes().get("id").toString()))){
employee.getLogbookEntry().add(logbookEntry);
Model.getInstance().save();
return;
}
}
}
}
JSP
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<title>Herzlich willkommen!</title>
</head>
<body>
<h1>Zeiterfassung</h1>
<form action="listEmployeeServlet" method="get">
<input type="submit" value="Mitarbeiterliste">
</form>
</body>
</html>
<%@ page import="zeiterfassung.model.Employee" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<title>Mitarbeiterliste</title>
</head>
<body>
<jsp:useBean id="emps" class="zeiterfassung.model.Employees" scope="request"></jsp:useBean>
<div class="w3-container">
<h1>Mitarbeiterliste</h1>
<table>
<thead>
<tr>
<th>Mitarbeiter-ID</th>
<th>Vorname</th>
<th>Nachname</th>
</tr>
</thead>
<tbody>
<% for(Employee emp : emps.getEmployee()){ %>
<tr>
<td><%=emp.getId()%></td>
<td><%=emp.getFirstname()%></td>
<td><%=emp.getLastname()%></td>
<td>
<form action="editEmp" method="get">
<input type="hidden" name="empId" id="empId" value="<%=emp.getId()%>">
<input type="submit" value="Edit" class="btn-floating btn-large cyan">
</form>
</td>
</tr>
<% } %>
</tbody>
</table>
<form action="addEmp" method="post">
<input type="submit" value="Add Employee">
</form>
</div>
</body>
</html>
<%@ page import="zeiterfassung.model.LogbookEntry" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<title>Employee</title>
</head>
<body>
<jsp:useBean id="emp" class="zeiterfassung.model.Employee" scope="request"></jsp:useBean>
<jsp:useBean id="logBookEntries" class="zeiterfassung.model.Employee" scope="request"></jsp:useBean>
<h1>${emp.firstname} ${emp.lastname}</h1>
<form action="updateEmployee" method="post">
<label>Id: ${emp.id}</label><br>
<label for="fname">Vorname:</label><br>
<input type="text" id="fname" name="fname" value="${emp.firstname}"><br>
<label for="lname">Nachname:</label><br>
<input type="text" id="lname" name="lname" value="${emp.lastname}"><br>
<label for="lname">Geburtsdatum:</label><br>
<input type="date" id="birth" name="birth" value="${emp.dateOfBirth}"><br>
<input type="hidden" id="id" name = "id" value="${emp.id}">
<input class="waves-effect waves-light btn" type="submit" value="Speichern">
</form>
<h2>Zeiten:</h2>
<form action="editEmp" method="get">
<label>Filter: </label>
<input type="time" id="filter" name="filter" value="<%=request.getParameter("filter")%>">
<input type="hidden" id="empId" name = "empId" value="${emp.id}">
<input class="waves-effect waves-light btn" type="submit" value="filtern">
</form>
<table>
<thead>
<tr>
<th>Aktivität</th>
<th>Start Zeit</th>
<th>End Zeit</th>
</tr>
</thead>
<tbody>
<% for(LogbookEntry entry : logBookEntries.getLogbookEntry()){ %>
<tr>
<td><%=entry.getActivity()%></td>
<td><%=entry.getStartTime()%></td>
<td><%=entry.getEndTime()%></td>
</tr>
<% } %>
</tbody>
</table>
<form action="addLogBookEntry" method="get">
<input type="hidden" id="id2" name = "id2" value="${emp.id}">
<input class="waves-effect waves-light btn" type="submit" value="neue Zeit verbuchen">
</form>
<form action="listEmployeeServlet" method="get">
<input class="waves-effect waves-light btn" type="submit" value="Zurück">
</form>
</div>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<link rel="stylesheet" href="css/w3.css">
<title>Zeit verbuchen</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
</head>
<body>
<jsp:useBean id="emp" class="zeiterfassung.model.Employee" scope="request"></jsp:useBean>
<div class="w3-container">
<h1>${emp.firstname} ${emp.lastname}</h1>
<form method="post" action="saveLogBookEntry">
<input type="hidden" id="id" name="id" value="${emp.id}">
<label for="activity">Aktivität:</label>
<input type="text" id="activity" name="activity"><br>
<label for="starttime">Startzeit:</label>
<input type="time" id="starttime" name="starttime"><br>
<label for="endtime">Endzeit:</label>
<input type="time" id="endtime" name="endtime"><br>
<input class="waves-effect waves-light btn" type="submit" value="Speichern">
</form>
<form action="editEmp" method="get">
<input type="hidden" id="empId" name="empId" value="${emp.id}">
<input class="waves-effect waves-light btn" type="submit" value="Zurück">
</form>
</div>
</body>
</html>