package hello;

import java.time.LocalDateTime;

import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;

@WebService
public class PierwszaUsluga {
	/* Usługa sieciowa (web service) to aplikacja serwerowa, z którą łączą się inne aplikacje i przysyłają zapytania,
	 * a usługa coś robi i odpowiada. Architektura "klient-serwer".
	 * Czasami mówi się o usłudze sieciowej, że to taka strona internetowa, ale przeznaczona dla innych programów, a nie dla ludzi.
	 * 
	 * Usługi typu SOAP ("klasyczne" u.s.) są oparte o format XML i standardy WSDL, SOAP, WS-I
	 * i są stosowane w administracji publicznej (podatki, epuap itp.), ale też w niektórych branżach bzinesu.
	 * 
	 * JAX-WS to technologia Javy, która służy do tworzenia usług typu SOAP (oraz klientów tych usług).
	 */
	
	@WebResult(name="komunikat")
	public String powitaj(@WebParam(name="imie") String imie) {
		return "Witaj " + imie + "!";
	}
	
	@WebResult(name="data_i_czas")
	public String ktoraGodzina() {
		return LocalDateTime.now().toString();
	}
	
	@WebResult(name="wynik")
	public long oblicz(
			@WebParam(name="arg1") long liczba1,
			@WebParam(name="arg2") long liczba2,
			@WebParam(name="operacja") String operacja) {
		switch(operacja) {
			case "+": return liczba1 + liczba2;
			case "-": return liczba1 - liczba2;
			case "*": return liczba1 * liczba2;
			case "/": return liczba1 / liczba2;
			case "%": return liczba1 % liczba2;
			default : throw new IllegalArgumentException("Nieznana operacja " + operacja);
		}
	}

}
