package auth.mapper;
import api.v1.CoordinateFormat;
import api.v1.UserPreferences;
import auth.models.User;
import auth.types.RoleType;
import models.UserPreferenceModel;
import java.util.ArrayList;
import java.util.List;
public class UserMapper {
public api.v1.User mapToApi(User mUser) {
api.v1.User apiUser = new api.v1.User();
apiUser.id = mUser.id;
apiUser.username = mUser.username;
apiUser.name = mUser.name;
apiUser.role = RoleType.get(mUser.role.getCode());
apiUser.isActive = mUser.isActive;
apiUser.preferences = new UserPreferences();
if (mUser.preferences == null) {
apiUser.preferences.showGrid = true;
apiUser.preferences.coordinateFormat = CoordinateFormat.DEGREES_MINUTES_SECONDS;
} else {
switch (mUser.preferences.coordinateFormat) {
case DECIMAL_DEGREES:
apiUser.preferences.coordinateFormat = CoordinateFormat.DECIMAL_DEGREES;
break;
case DEGREES_MINUTES_SECONDS:
apiUser.preferences.coordinateFormat = CoordinateFormat.DEGREES_MINUTES_SECONDS;
break;
case UTM:
apiUser.preferences.coordinateFormat = CoordinateFormat.UTM;
break;
}
apiUser.preferences.showGrid = mUser.preferences.showGrid;
}
return apiUser;
}
public User mapFromApi(api.v1.User aUser) {
User mUser = new User();
mUser.username = aUser.username.toLowerCase();
mUser.name = aUser.name;
mUser.id = aUser.id;
mUser.role = aUser.role;
mUser.isActive = aUser.isActive;
mUser.preferences = new UserPreferenceModel();
mUser.preferences.showGrid = aUser.preferences.showGrid;
switch (aUser.preferences.coordinateFormat) {
case DECIMAL_DEGREES:
mUser.preferences.coordinateFormat = models.CoordinateFormat.DECIMAL_DEGREES;
break;
case DEGREES_MINUTES_SECONDS:
mUser.preferences.coordinateFormat = models.CoordinateFormat.DEGREES_MINUTES_SECONDS;
break;
case UTM:
mUser.preferences.coordinateFormat = models.CoordinateFormat.UTM;
break;
}
return mUser;
}
public List<api.v1.User> mapToApi(List<User> userModels) {
List<api.v1.User> users = new ArrayList<>();
for (User u : userModels) {
users.add(mapToApi(u));
}
return users;
}
}