Created
September 30, 2014 15:35
-
-
Save dacrome/4f800b7f10fa7a4969f0 to your computer and use it in GitHub Desktop.
This is an example for an ExtensionService and the updated ExtensionController with the changes from here: https://gist.github.com/dacrome/a04f2377f70676fc5230
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// sorry, no imports | |
@Service | |
@Transactional // I know this should be in the respository, but one layer deeper than controller. yay! | |
public class ExtensionService { | |
@Inject | |
private ExtensionDao dao; | |
public List<ExtensionMap> getAllExtensions() { | |
List<Extension> extensions = fromEntity(dao.getAllExtensions()); | |
final List<ExtensionMap> extensionMaps = new ArrayList<>(); | |
for(Extension extension : extensions) { | |
final ExtensionMap extensionMap = new ExtensionMap(extension.getUrn()); | |
for(Map.Entry<String, Extension.Field> fieldEntry : extension.getFields().entrySet()){ | |
final String field = fieldEntry.getKey(); | |
final ExtensionFieldType type = fieldEntry.getValue().getType(); | |
extensionMap.addPair(field, type); | |
} | |
extensionMaps.add(extensionMap); | |
} | |
return extensionMaps; | |
} | |
public List<Extension> fromEntity(List<ExtensionEntity> entities){ | |
List<Extension> result = new ArrayList<Extension>(); | |
for(ExtensionEntity entity : entities){ | |
Extension.Builder builder = new Extension.Builder(entity.getUrn()); | |
setField(entity, builder); | |
result.add(builder.build()); | |
} | |
return result; | |
} | |
private void setField(ExtensionEntity entity, Extension.Builder builder) { | |
for(ExtensionFieldEntity fieldEntity : entity.getFields()){ | |
switch (fieldEntity.getType().getName()) { | |
case "STRING": | |
builder.setField(fieldEntity.getName(), "null"); | |
break; | |
case "INTEGER": | |
builder.setField(fieldEntity.getName(), BigInteger.ZERO); | |
break; | |
case "DECIMAL": | |
builder.setField(fieldEntity.getName(), BigDecimal.ZERO); | |
break; | |
case "BOOLEAN": | |
builder.setField(fieldEntity.getName(), false); | |
break; | |
case "DATE_TIME": | |
builder.setField(fieldEntity.getName(), new Date(0L)); | |
break; | |
case "BINARY": | |
builder.setField(fieldEntity.getName(), ByteBuffer.wrap(new byte[]{})); | |
break; | |
case "REFERENCE": | |
try { | |
builder.setField(fieldEntity.getName(), new URI("http://www.osiam.org")); | |
} catch (URISyntaxException e) { | |
throw new IllegalStateException(e); | |
} | |
break; | |
default: | |
throw new IllegalArgumentException("Type " + fieldEntity.getType().getName() + " does not exist"); | |
} | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Controller | |
@RequestMapping(value = "/osiam") | |
public class OsiamController { | |
@Autowired | |
private ExtensionService extensionService; | |
@RequestMapping(value="/Extensiontypes", method = RequestMethod.GET) | |
@ResponseStatus(HttpStatus.OK) | |
@ResponseBody | |
public List<ExtensionMap> getAllExtensions() { | |
return extensionService.getExtensions(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment