package auth.mapper;
import api.v1.*;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.joda.time.Seconds;
import service.PoseidonService;
public class AuthMapper {
public ValidateTokenResponse map2ValidateTokenResponse(auth.models.Token token) {
ValidateTokenResponse validateTokenResponse = new ValidateTokenResponse();
if (token.user != null) {
validateTokenResponse.user = map2User(token.user, false);
}
DateTimeZone tz = PoseidonService.getTimeZone();
validateTokenResponse.expires_in = (long) Seconds.secondsBetween(DateTime.now(tz), new DateTime(token.accessExpires, tz)).getSeconds();
validateTokenResponse.grant_type = token.grantType;
return validateTokenResponse;
}
public Token map2Token(auth.models.Token tokenModel) {
Token token = new Token();
token.access_token = tokenModel.accessToken;
token.expires_in = tokenModel.getExpiresInSeconds();
token.refresh_token = tokenModel.refreshToken;
token.token_type = tokenModel.tokenType;
return token;
}
public User map2User(auth.models.User mUser, boolean full) {
User aUser = new User();
aUser.id = mUser.id;
aUser.name = mUser.name;
aUser.username = mUser.username;
aUser.role = mUser.role;
aUser.preferences = new UserPreferences();
aUser.preferences.showGrid = mUser.preferences.showGrid;
switch (mUser.preferences.coordinateFormat){
case DECIMAL_DEGREES:
aUser.preferences.coordinateFormat = CoordinateFormat.DECIMAL_DEGREES;
break;
case DEGREES_MINUTES_SECONDS:
aUser.preferences.coordinateFormat = CoordinateFormat.DEGREES_MINUTES_SECONDS;
break;
case UTM:
aUser.preferences.coordinateFormat = CoordinateFormat.UTM;
break;
}
return aUser;
}
}