Last active
April 27, 2018 03:09
-
-
Save onlyeat3/06a24f33dd9e8984bcf35cae5ff8ec27 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
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