Skip to content

Instantly share code, notes, and snippets.

@onlyeat3
Last active April 27, 2018 03:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save onlyeat3/06a24f33dd9e8984bcf35cae5ff8ec27 to your computer and use it in GitHub Desktop.
Save onlyeat3/06a24f33dd9e8984bcf35cae5ff8ec27 to your computer and use it in GitHub Desktop.
List<Class<?>> validAnnotationList = new ArrayList<>();
validAnnotationList.add(RequestMapping.class);
List<Object> controllerList = new ArrayList<>();
controllerList.addAll(this.applicationContext.getBeansWithAnnotation(Controller.class).values());
List<SysResource> resourceEntityList = new ArrayList<>();
AtomicLong id = new AtomicLong();
for (Object controller : controllerList) {
Class<?> clazz = controller.getClass();
clazz = clazz.getSuperclass();
RequestMapping[] requestMappings = clazz.getAnnotationsByType(RequestMapping.class);
String controllerUri = Arrays.stream(requestMappings)
.map(requestMapping -> Arrays.stream(requestMapping.value()).findFirst().orElse(StringUtils.EMPTY))
.map(s -> !s.startsWith("/") ? "/" + s : s)
.findFirst()
.orElse(StringUtils.EMPTY);
String resourceName = Arrays.stream(clazz.getAnnotationsByType(ResourceName.class))
.map(ResourceName::value)
.findFirst()
.orElse(StringUtils.EMPTY);
if(!controller.getClass().getName().contains("bms")){
continue;
}
SysResource controllerResourceEntity = new SysResource();
controllerResourceEntity.setId(id.incrementAndGet());
controllerResourceEntity.setTargetUri(controllerUri);
controllerResourceEntity.setResourceName(resourceName);
controllerResourceEntity.setParentId(0L);
if(resourceEntityList.contains(controllerResourceEntity)){
continue;
}
resourceEntityList.add(controllerResourceEntity);
List<Method> methodList = Arrays.stream(clazz.getDeclaredMethods())
.filter(method -> {
for (Annotation annotation : method.getDeclaredAnnotations()) {
if(validAnnotationList.contains(annotation.annotationType())){
return true;
}
}
return false;
})
.collect(Collectors.toList());
for (Method method : methodList) {
String uri = Arrays.stream(method.getAnnotationsByType(RequestMapping.class))
.map(requestMapping1 -> Arrays.stream(requestMapping1.value())
.findFirst()
.orElse(StringUtils.EMPTY))
.findFirst().orElse(StringUtils.EMPTY);
if(StringUtils.isEmpty(uri)){
continue;
}
SysResource methodResourceEntity = new SysResource();
if(!uri.startsWith("/")){
uri = "/" + uri;
}
uri = controllerUri + uri;
methodResourceEntity.setResourceName(method.getName());
methodResourceEntity.setId(id.incrementAndGet());
methodResourceEntity.setParentId(controllerResourceEntity.getId());
methodResourceEntity.setTargetUri(uri);
String methodResourceName = Arrays.stream(method.getAnnotationsByType(ResourceName.class))
.map(ResourceName::value)
.findFirst()
.orElse(StringUtils.EMPTY);
methodResourceEntity.setResourceName(methodResourceName);
if(resourceEntityList.contains(methodResourceEntity)){
continue;
}
resourceEntityList.add(methodResourceEntity);
}
}
for (SysResource sysResourceEntity : resourceEntityList) {
String sql = String.format("INSERT INTO `sys_resource` (`id`, `resource_name`,resource_type, `parent_id`,parent_ids, `target_uri`, `operator_id`, `operator_ip`) " +
"VALUES (%s, '%s',%s, %s, %s, '%s',%s, '%s');"
, sysResourceEntity.getId()
, sysResourceEntity.getResourceName()
, 0
, sysResourceEntity.getParentId()
, sysResourceEntity.getParentId()
, sysResourceEntity.getTargetUri()
, 0
, StringUtils.EMPTY);
System.out.println(sql);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment