Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
Springboot Plus
Commits
03e4f217
Commit
03e4f217
authored
Oct 21, 2019
by
zengchao
Browse files
处理后端接口
parent
fee318d4
Changes
9
Hide whitespace changes
Inline
Side-by-side
plus-admin/admin-console/src/main/java/com/ibeetl/admin/console/annotation/ElColumn.java
0 → 100644
View file @
03e4f217
package
com.ibeetl.admin.console.annotation
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
/**
* 前端 element-ui 中的数据表格与vo对象字段对应的元数据信息的注解
*
* @author 一日看尽长安花
*/
@Target
(
ElementType
.
FIELD
)
@Retention
(
RetentionPolicy
.
RUNTIME
)
public
@interface
ElColumn
{
String
name
();
String
type
();
boolean
sortable
()
default
false
;
boolean
visible
()
default
true
;
boolean
required
()
default
false
;
}
plus-admin/admin-console/src/main/java/com/ibeetl/admin/console/model/vo/Table.java
0 → 100644
View file @
03e4f217
package
com.ibeetl.admin.console.model.vo
;
import
com.ibeetl.admin.console.annotation.ElColumn
;
public
class
Table
{
@ElColumn
(
name
=
"ID"
,
type
=
"string"
,
visible
=
false
)
private
String
id
;
@ElColumn
(
name
=
"名字"
,
type
=
"string"
)
private
String
name
;
@ElColumn
(
name
=
"地址"
,
type
=
"string"
)
private
String
address
;
@ElColumn
(
name
=
"日期"
,
type
=
"date"
)
private
String
date
;
@ElColumn
(
name
=
"网址"
,
type
=
"string"
)
private
String
url
;
}
plus-admin/admin-console/src/main/java/com/ibeetl/admin/console/util/VOUtil.java
0 → 100644
View file @
03e4f217
package
com.ibeetl.admin.console.util
;
import
cn.hutool.core.annotation.AnnotationUtil
;
import
cn.hutool.core.map.MapBuilder
;
import
cn.hutool.core.map.MapUtil
;
import
com.ibeetl.admin.console.annotation.ElColumn
;
import
java.lang.reflect.Field
;
import
java.util.Map
;
import
java.util.Optional
;
/**
* 视图对象工具类
*
* @author 一日看尽长安花
*/
public
class
VOUtil
{
public
static
Map
resolveElColumn
(
Class
cls
)
{
MapBuilder
<
String
,
Map
>
mapBuilder
=
MapUtil
.<
String
,
Map
>
builder
();
Field
[]
declaredFields
=
cls
.
getDeclaredFields
();
for
(
Field
field
:
declaredFields
)
{
Map
<
String
,
Object
>
annotationValueMap
=
AnnotationUtil
.
getAnnotationValueMap
(
field
,
ElColumn
.
class
);
ElColumn
elColumn
=
AnnotationUtil
.
getAnnotation
(
field
,
ElColumn
.
class
);
Optional
.
ofNullable
(
elColumn
)
.
ifPresent
(
column
->
{
if
(
column
.
visible
())
{
annotationValueMap
.
remove
(
"visible"
);
mapBuilder
.
put
(
field
.
getName
(),
annotationValueMap
);
}
});
}
return
mapBuilder
.
build
();
}
}
plus-admin/admin-console/src/main/java/com/ibeetl/admin/console/web/MenuController.java
View file @
03e4f217
package
com.ibeetl.admin.console.web
;
package
com.ibeetl.admin.console.web
;
import
com.ibeetl.admin.console.service.MenuConsoleService
;
import
com.ibeetl.admin.console.web.query.MenuQuery
;
import
com.ibeetl.admin.core.annotation.Function
;
import
com.ibeetl.admin.core.annotation.Query
;
import
com.ibeetl.admin.core.entity.CoreMenu
;
import
com.ibeetl.admin.core.rbac.tree.MenuItem
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
import
com.ibeetl.admin.core.util.AnnotationUtil
;
import
com.ibeetl.admin.core.util.ConvertUtil
;
import
com.ibeetl.admin.core.web.JsonResult
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
import
org.apache.commons.logging.LogFactory
;
import
org.beetl.sql.core.engine.PageQuery
;
import
org.beetl.sql.core.engine.PageQuery
;
...
@@ -15,19 +24,6 @@ import org.springframework.web.bind.annotation.PostMapping;
...
@@ -15,19 +24,6 @@ import org.springframework.web.bind.annotation.PostMapping;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.servlet.ModelAndView
;
import
org.springframework.web.servlet.ModelAndView
;
import
com.ibeetl.admin.console.service.MenuConsoleService
;
import
com.ibeetl.admin.console.web.query.FunctionQuery
;
import
com.ibeetl.admin.console.web.query.MenuQuery
;
import
com.ibeetl.admin.core.annotation.Function
;
import
com.ibeetl.admin.core.annotation.Query
;
import
com.ibeetl.admin.core.entity.CoreFunction
;
import
com.ibeetl.admin.core.entity.CoreMenu
;
import
com.ibeetl.admin.core.rbac.tree.MenuItem
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
import
com.ibeetl.admin.core.util.AnnotationUtil
;
import
com.ibeetl.admin.core.util.ConvertUtil
;
import
com.ibeetl.admin.core.web.JsonResult
;
/** @author lijiazhi */
/** @author lijiazhi */
@Controller
@Controller
public
class
MenuController
{
public
class
MenuController
{
...
@@ -70,7 +66,6 @@ public class MenuController {
...
@@ -70,7 +66,6 @@ public class MenuController {
/**
/**
* 查询
* 查询
*
*
* @param menu
* @return
* @return
*/
*/
@PostMapping
(
MODEL
+
"/list/condition.json"
)
@PostMapping
(
MODEL
+
"/list/condition.json"
)
...
@@ -117,7 +112,7 @@ public class MenuController {
...
@@ -117,7 +112,7 @@ public class MenuController {
@ResponseBody
@ResponseBody
public
JsonResult
update
(
CoreMenu
fun
)
{
public
JsonResult
update
(
CoreMenu
fun
)
{
menuService
.
updateMenu
(
fun
);
menuService
.
updateMenu
(
fun
);
return
new
JsonResult
()
.
success
();
return
JsonResult
.
success
();
}
}
/**
/**
...
@@ -149,7 +144,7 @@ public class MenuController {
...
@@ -149,7 +144,7 @@ public class MenuController {
@ResponseBody
@ResponseBody
public
JsonResult
delete
(
Long
id
)
{
public
JsonResult
delete
(
Long
id
)
{
menuService
.
deleteMenu
(
id
);
menuService
.
deleteMenu
(
id
);
return
new
JsonResult
()
.
success
();
return
JsonResult
.
success
();
}
}
/**
/**
...
@@ -164,6 +159,6 @@ public class MenuController {
...
@@ -164,6 +159,6 @@ public class MenuController {
public
JsonResult
delete
(
String
ids
)
{
public
JsonResult
delete
(
String
ids
)
{
List
<
Long
>
dels
=
ConvertUtil
.
str2longs
(
ids
);
List
<
Long
>
dels
=
ConvertUtil
.
str2longs
(
ids
);
menuService
.
batchDeleteMenuId
(
dels
);
menuService
.
batchDeleteMenuId
(
dels
);
return
new
JsonResult
()
.
success
();
return
JsonResult
.
success
();
}
}
}
}
plus-admin/admin-console/src/test/java/CustomBeanProcessorTest.java
View file @
03e4f217
import
com.ibeetl.admin.ConsoleApplication
;
import
com.ibeetl.admin.ConsoleApplication
;
import
com.ibeetl.admin.console.model.vo.Table
;
import
com.ibeetl.admin.console.util.VOUtil
;
import
com.ibeetl.admin.core.dao.CoreFunctionDao
;
import
com.ibeetl.admin.core.dao.CoreFunctionDao
;
import
com.ibeetl.admin.core.entity.CoreRoute
;
import
com.ibeetl.admin.core.entity.CoreRoute
;
import
java.util.Calendar
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
import
org.junit.Test
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.junit.runner.RunWith
;
...
@@ -24,15 +24,6 @@ public class CustomBeanProcessorTest {
...
@@ -24,15 +24,6 @@ public class CustomBeanProcessorTest {
@Test
@Test
public
void
test
()
{
public
void
test
()
{
for
(
int
i
=
0
;
i
<
1000
;
i
++)
{
VOUtil
.
resolveElColumn
(
Table
.
class
);
Calendar
instance
=
Calendar
.
getInstance
();
instance
.
setTimeInMillis
(
System
.
currentTimeMillis
());
instance
.
set
(
Calendar
.
DAY_OF_MONTH
,
1
);
instance
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
);
instance
.
set
(
Calendar
.
MINUTE
,
0
);
instance
.
set
(
Calendar
.
SECOND
,
0
);
Date
time
=
instance
.
getTime
();
System
.
out
.
println
(
time
);
}
}
}
}
}
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/conf/processor/JsonBeanProcessor.java
View file @
03e4f217
...
@@ -13,6 +13,7 @@ import com.ibeetl.admin.core.conf.resultmap.GridRow;
...
@@ -13,6 +13,7 @@ import com.ibeetl.admin.core.conf.resultmap.GridRow;
import
com.ibeetl.admin.core.util.CacheUtil
;
import
com.ibeetl.admin.core.util.CacheUtil
;
import
java.beans.IntrospectionException
;
import
java.beans.IntrospectionException
;
import
java.beans.PropertyDescriptor
;
import
java.beans.PropertyDescriptor
;
import
java.lang.reflect.Field
;
import
java.sql.ResultSet
;
import
java.sql.ResultSet
;
import
java.sql.ResultSetMetaData
;
import
java.sql.ResultSetMetaData
;
import
java.sql.SQLException
;
import
java.sql.SQLException
;
...
@@ -23,8 +24,11 @@ import java.util.Map;
...
@@ -23,8 +24,11 @@ import java.util.Map;
import
java.util.Map.Entry
;
import
java.util.Map.Entry
;
import
java.util.Set
;
import
java.util.Set
;
import
org.beetl.sql.core.SQLManager
;
import
org.beetl.sql.core.SQLManager
;
import
org.beetl.sql.core.db.DBStyle
;
import
org.beetl.sql.core.kit.BeanKit
;
import
org.beetl.sql.core.kit.BeanKit
;
import
org.beetl.sql.core.mapping.BeanProcessor
;
import
org.beetl.sql.core.mapping.BeanProcessor
;
import
org.beetl.sql.core.mapping.type.JavaSqlTypeHandler
;
import
org.beetl.sql.core.mapping.type.TypeParameter
;
public
class
JsonBeanProcessor
extends
BeanProcessor
{
public
class
JsonBeanProcessor
extends
BeanProcessor
{
...
@@ -96,15 +100,15 @@ public class JsonBeanProcessor extends BeanProcessor {
...
@@ -96,15 +100,15 @@ public class JsonBeanProcessor extends BeanProcessor {
/*复杂结果集映射,取消TailBean的便利性*/
/*复杂结果集映射,取消TailBean的便利性*/
rs
.
absolute
(
0
);
rs
.
absolute
(
0
);
mapping
.
setNestedRows
(
null
);
mapping
.
setNestedRows
(
null
);
fillMappingRow
(
rs
,
mapping
);
fillMappingRow
(
sqlId
,
rs
,
mapping
);
results
=
convertMapping
(
mapping
,
type
);
results
=
convertMapping
(
mapping
,
type
);
}
}
return
CollUtil
.
getFirst
(
results
);
return
CollUtil
.
getFirst
(
results
);
}
}
/**
/**
*
* 将ResultSet映射为一个List<POJO>集合
* 将ResultSet映射为一个List<POJO>集合
*
* @param sqlId
* @param sqlId
* @param rs
* @param rs
* @param type
* @param type
...
@@ -133,7 +137,7 @@ public class JsonBeanProcessor extends BeanProcessor {
...
@@ -133,7 +137,7 @@ public class JsonBeanProcessor extends BeanProcessor {
/*复杂结果集映射,取消TailBean的便利性*/
/*复杂结果集映射,取消TailBean的便利性*/
rs
.
absolute
(
0
);
rs
.
absolute
(
0
);
mapping
.
getNestedRows
().
clear
();
mapping
.
getNestedRows
().
clear
();
fillMappingRow
(
rs
,
mapping
);
fillMappingRow
(
sqlId
,
rs
,
mapping
);
results
=
convertMapping
(
mapping
,
type
);
results
=
convertMapping
(
mapping
,
type
);
}
}
return
results
;
return
results
;
...
@@ -179,7 +183,7 @@ public class JsonBeanProcessor extends BeanProcessor {
...
@@ -179,7 +183,7 @@ public class JsonBeanProcessor extends BeanProcessor {
List
<
GridRow
>
nestedRows
=
nestedColumn
.
getNestedRows
();
List
<
GridRow
>
nestedRows
=
nestedColumn
.
getNestedRows
();
for
(
GridRow
nestedRow
:
nestedRows
)
{
for
(
GridRow
nestedRow
:
nestedRows
)
{
if
(
StrUtil
.
isNotBlank
(
resultType
))
{
if
(
StrUtil
.
isNotBlank
(
resultType
))
{
/*在映射中标明类型,
证明
是复杂类型*/
/*在映射中标明类型,
表示
是复杂类型*/
Class
nestedPropType
=
ClassUtil
.
loadClass
(
resultType
);
Class
nestedPropType
=
ClassUtil
.
loadClass
(
resultType
);
String
nestedPropName
=
mappingHeader
.
getNestedPropName
();
String
nestedPropName
=
mappingHeader
.
getNestedPropName
();
boolean
isCollection
=
mappingHeader
.
getIsCollection
();
boolean
isCollection
=
mappingHeader
.
getIsCollection
();
...
@@ -193,12 +197,12 @@ public class JsonBeanProcessor extends BeanProcessor {
...
@@ -193,12 +197,12 @@ public class JsonBeanProcessor extends BeanProcessor {
}
}
BeanUtil
.
setFieldValue
(
obj
,
nestedPropName
,
resultObj
);
BeanUtil
.
setFieldValue
(
obj
,
nestedPropName
,
resultObj
);
}
else
{
}
else
{
/*在映射中没有标明类型,
证明
是基本类型*/
/*在映射中没有标明类型,
表示
是基本类型*/
String
nestedPropName
=
mappingHeader
.
getNestedPropName
();
String
nestedPropName
=
mappingHeader
.
getNestedPropName
();
boolean
isCollection
=
mappingHeader
.
getIsCollection
();
boolean
isCollection
=
mappingHeader
.
getIsCollection
();
Object
resultObj
=
BeanUtil
.
getFieldValue
(
obj
,
nestedPropName
);
Object
resultObj
=
BeanUtil
.
getFieldValue
(
obj
,
nestedPropName
);
Map
<
String
,
Object
>
beanMap
=
nestedRow
.
getNestedColumns
().
get
(
0
).
getBeanMap
();
Map
<
String
,
Object
>
beanMap
=
nestedRow
.
getNestedColumns
().
get
(
0
).
getBeanMap
();
/*
几乎此处说明内嵌的字段是一个
基本类型
的
集合
,所以beanmap中应该只有一个值
*/
/*
无法递归,表明是
基本类型集合*/
Object
nestedPropObj
=
CollUtil
.
getFirst
(
beanMap
.
values
());
Object
nestedPropObj
=
CollUtil
.
getFirst
(
beanMap
.
values
());
if
(
isCollection
)
{
if
(
isCollection
)
{
((
Collection
)
resultObj
).
add
(
nestedPropObj
);
((
Collection
)
resultObj
).
add
(
nestedPropObj
);
...
@@ -210,7 +214,6 @@ public class JsonBeanProcessor extends BeanProcessor {
...
@@ -210,7 +214,6 @@ public class JsonBeanProcessor extends BeanProcessor {
}
}
}
}
}
}
/*TODO 重写,以便提供命名转换*/
BeanUtil
.
fillBeanWithMap
(
curObjCol
.
getBeanMap
(),
obj
,
true
,
true
);
BeanUtil
.
fillBeanWithMap
(
curObjCol
.
getBeanMap
(),
obj
,
true
,
true
);
return
obj
;
return
obj
;
}
}
...
@@ -221,21 +224,27 @@ public class JsonBeanProcessor extends BeanProcessor {
...
@@ -221,21 +224,27 @@ public class JsonBeanProcessor extends BeanProcessor {
* @param mapping
* @param mapping
* @throws SQLException
* @throws SQLException
*/
*/
protected
void
fillMappingRow
(
ResultSet
resultSet
,
GridMapping
mapping
)
throws
SQLException
{
protected
void
fillMappingRow
(
String
sqlId
,
ResultSet
resultSet
,
GridMapping
mapping
)
throws
SQLException
{
GridHeader
header
=
mapping
.
getHeader
();
GridHeader
header
=
mapping
.
getHeader
();
GridColumn
column
=
new
GridColumn
();
GridColumn
column
=
new
GridColumn
();
while
(
resultSet
.
next
())
{
while
(
resultSet
.
next
())
{
List
<
GridRow
>
mappingNestedRows
=
mapping
.
getNestedRows
();
List
<
GridRow
>
mappingNestedRows
=
mapping
.
getNestedRows
();
GridRow
row
=
fillRowColumn
(
resultSet
,
header
,
column
);
GridRow
row
=
fillRowColumn
(
sqlId
,
resultSet
,
header
,
column
);
if
(!
mappingNestedRows
.
contains
(
row
))
{
if
(!
mappingNestedRows
.
contains
(
row
))
{
mappingNestedRows
.
add
(
row
);
mappingNestedRows
.
add
(
row
);
}
}
}
}
}
}
/** 网格行中存在一个个网格列,也对应着相应的网格头结构 */
/**
protected
GridRow
fillRowColumn
(
ResultSet
resultSet
,
GridHeader
header
,
GridColumn
column
)
{
* 填充网格行中的单元格映射结构。
*
* <p>网格行中存在一个个网格列,也对应着相应的网格头结构
*/
protected
GridRow
fillRowColumn
(
String
sqlId
,
ResultSet
resultSet
,
GridHeader
header
,
GridColumn
column
)
throws
SQLException
{
/*搜寻已经存在的row,如果没有,则插入一个*/
/*搜寻已经存在的row,如果没有,则插入一个*/
Map
<
String
,
Object
>
beanMap
=
extractMapFromRs
(
resultSet
,
header
);
Map
<
String
,
Object
>
beanMap
=
extractMapFromRs
(
sqlId
,
resultSet
,
header
);
Integer
calculateKey
=
GridColumn
.
calculateKey
(
beanMap
);
Integer
calculateKey
=
GridColumn
.
calculateKey
(
beanMap
);
GridRow
row
=
column
.
findRowByKey
(
calculateKey
);
GridRow
row
=
column
.
findRowByKey
(
calculateKey
);
/*这里可能出现一个问题,始终第0个行是空白的*/
/*这里可能出现一个问题,始终第0个行是空白的*/
...
@@ -250,7 +259,7 @@ public class JsonBeanProcessor extends BeanProcessor {
...
@@ -250,7 +259,7 @@ public class JsonBeanProcessor extends BeanProcessor {
for
(
GridHeader
nestedHeader
:
nestedHeaders
)
{
for
(
GridHeader
nestedHeader
:
nestedHeaders
)
{
GridColumn
nestedColumn
=
row
.
findColumnByHeader
(
nestedHeader
);
GridColumn
nestedColumn
=
row
.
findColumnByHeader
(
nestedHeader
);
List
<
GridRow
>
nestedRows
=
nestedColumn
.
getNestedRows
();
List
<
GridRow
>
nestedRows
=
nestedColumn
.
getNestedRows
();
GridRow
nestedRow
=
fillRowColumn
(
resultSet
,
nestedHeader
,
nestedColumn
);
GridRow
nestedRow
=
fillRowColumn
(
sqlId
,
resultSet
,
nestedHeader
,
nestedColumn
);
if
(!
nestedRows
.
contains
(
nestedRow
))
{
if
(!
nestedRows
.
contains
(
nestedRow
))
{
nestedRows
.
add
(
nestedRow
);
nestedRows
.
add
(
nestedRow
);
}
}
...
@@ -261,22 +270,59 @@ public class JsonBeanProcessor extends BeanProcessor {
...
@@ -261,22 +270,59 @@ public class JsonBeanProcessor extends BeanProcessor {
/**
/**
* 遍历网格头,由网格头的信息从结果集中读取值。<br>
* 遍历网格头,由网格头的信息从结果集中读取值。<br>
* 这样做的好处是方便算法编写;坏处是失去了tailbean的处理,因为无法确定结果集列的读取状态。
*
*
* @param resultSet
* @param resultSet
* @param header
* @param header
* @return
* @return
*/
*/
private
Map
<
String
,
Object
>
extractMapFromRs
(
ResultSet
resultSet
,
GridHeader
header
)
{
private
Map
<
String
,
Object
>
extractMapFromRs
(
String
sqlId
,
ResultSet
resultSet
,
GridHeader
header
)
throws
SQLException
{
/*TODO 待处理TypeParameter和映射类型的注解的处理*/
Map
<
String
,
Object
>
tempBeanMap
=
MapUtil
.
newHashMap
();
Map
<
String
,
Object
>
tempBeanMap
=
MapUtil
.
newHashMap
();
Map
<
String
,
Integer
>
columnLableToIndexMap
=
MapUtil
.
newHashMap
();
ResultSetMetaData
metaData
=
resultSet
.
getMetaData
();
for
(
int
i
=
1
;
i
<=
metaData
.
getColumnCount
();
i
++)
{
String
key
=
metaData
.
getColumnLabel
(
i
);
boolean
isSpecialDbRn
=
(
super
.
dbType
==
DBStyle
.
DB_ORACLE
||
super
.
dbType
==
DBStyle
.
DB_SQLSERVER
)
&&
key
.
equalsIgnoreCase
(
"beetl_rn"
);
if
(
isSpecialDbRn
)
{
// sql server 特殊处理,sql'server的翻页使用了额外列作为翻页参数,需要过滤
continue
;
}
columnLableToIndexMap
.
putIfAbsent
(
key
,
i
);
}
/*第一步、先处理当前可以处理的*/
/*第一步、先处理当前可以处理的*/
Class
objectClass
=
ClassUtil
.
loadClass
(
header
.
getResultType
(),
false
);
Map
<
String
,
String
>
javaToJdbcMap
=
header
.
getJavaToJdbcMap
();
Map
<
String
,
String
>
javaToJdbcMap
=
header
.
getJavaToJdbcMap
();
Set
<
Entry
<
String
,
String
>>
entrySet
=
javaToJdbcMap
.
entrySet
();
Set
<
Entry
<
String
,
String
>>
entrySet
=
javaToJdbcMap
.
entrySet
();
for
(
Entry
<
String
,
String
>
entry
:
entrySet
)
{
for
(
Entry
<
String
,
String
>
entry
:
entrySet
)
{
try
{
try
{
tempBeanMap
.
put
(
entry
.
getKey
(),
resultSet
.
getObject
(
entry
.
getValue
()));
Field
declaredField
=
ClassUtil
.
getDeclaredField
(
objectClass
,
entry
.
getKey
());
Class
fieldType
=
declaredField
!=
null
?
declaredField
.
getType
()
:
null
;
Integer
columnIndex
=
columnLableToIndexMap
.
getOrDefault
(
entry
.
getValue
(),
-
1
);
columnIndex
=
columnIndex
!=
-
1
?
columnIndex
:
columnLableToIndexMap
.
getOrDefault
(
entry
.
getValue
().
toUpperCase
(),
-
1
);
columnIndex
=
columnIndex
!=
-
1
?
columnIndex
:
columnLableToIndexMap
.
getOrDefault
(
entry
.
getValue
().
toLowerCase
(),
-
1
);
TypeParameter
typeParameter
=
new
TypeParameter
(
sqlId
,
super
.
dbName
,
fieldType
,
resultSet
,
metaData
,
columnIndex
);
JavaSqlTypeHandler
handler
=
super
.
getHandlers
().
get
(
fieldType
);
if
(
handler
==
null
)
{
handler
=
super
.
getDefaultHandler
();
}
tempBeanMap
.
put
(
entry
.
getKey
(),
handler
.
getValue
(
typeParameter
));
}
catch
(
SQLException
e
)
{
}
catch
(
SQLException
e
)
{
/*
普遍
错误:从resultset中获取一个不存在的列,但可以忽视*/
/*
大部分
错误:从resultset中获取一个不存在的列,但可以忽视*/
}
}
}
}
return
tempBeanMap
;
return
tempBeanMap
;
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/service/
vea/
RoleRoutesService.java
→
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/service/RoleRoutes
El
Service.java
View file @
03e4f217
package
com.ibeetl.admin.core.service
.vea
;
package
com.ibeetl.admin.core.service
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.convert.Convert
;
import
cn.hutool.core.convert.Convert
;
...
@@ -19,7 +19,7 @@ import org.springframework.transaction.annotation.Transactional;
...
@@ -19,7 +19,7 @@ import org.springframework.transaction.annotation.Transactional;
@Slf4j
@Slf4j
@Service
@Service
@Transactional
@Transactional
public
class
RoleRoutesService
{
public
class
RoleRoutes
El
Service
{
@Autowired
private
CoreFunctionDao
coreFunctionDao
;
@Autowired
private
CoreFunctionDao
coreFunctionDao
;
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/web/
vea/UserRest
Controller.java
→
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/web/
UserEl
Controller.java
View file @
03e4f217
package
com.ibeetl.admin.core.web
.vea
;
package
com.ibeetl.admin.core.web
;
import
cn.hutool.core.map.MapUtil
;
import
cn.hutool.core.map.MapUtil
;
import
com.ibeetl.admin.core.annotation.RequestBodyPlus
;
import
com.ibeetl.admin.core.annotation.RequestBodyPlus
;
...
@@ -7,7 +7,7 @@ import com.ibeetl.admin.core.entity.CoreRoute;
...
@@ -7,7 +7,7 @@ import com.ibeetl.admin.core.entity.CoreRoute;
import
com.ibeetl.admin.core.entity.CoreUser
;
import
com.ibeetl.admin.core.entity.CoreUser
;
import
com.ibeetl.admin.core.rbac.UserLoginInfo
;
import
com.ibeetl.admin.core.rbac.UserLoginInfo
;
import
com.ibeetl.admin.core.rbac.UserRoleInfo
;
import
com.ibeetl.admin.core.rbac.UserRoleInfo
;
import
com.ibeetl.admin.core.service.
vea.
RoleRoutesService
;
import
com.ibeetl.admin.core.service.RoleRoutes
El
Service
;
import
com.ibeetl.admin.core.service.CoreUserService
;
import
com.ibeetl.admin.core.service.CoreUserService
;
import
com.ibeetl.admin.core.util.HttpRequestLocal
;
import
com.ibeetl.admin.core.util.HttpRequestLocal
;
import
com.ibeetl.admin.core.util.JoseJwtUtil
;
import
com.ibeetl.admin.core.util.JoseJwtUtil
;
...
@@ -21,9 +21,9 @@ import org.springframework.web.bind.annotation.PostMapping;
...
@@ -21,9 +21,9 @@ import org.springframework.web.bind.annotation.PostMapping;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
@RestController
@RestController
public
class
User
Rest
Controller
{
public
class
User
El
Controller
{
@Autowired
private
RoleRoutesService
roleRoutesService
;
@Autowired
private
RoleRoutes
El
Service
roleRoutesService
;
@Autowired
private
CoreUserService
coreUserService
;
@Autowired
private
CoreUserService
coreUserService
;
...
...
plus-admin/intellij-java-google-style.xml
View file @
03e4f217
<?xml version="1.0" encoding="UTF-8"?>
<code_scheme
name=
"GoogleStyle"
version=
"173"
>
<code_scheme
name=
"GoogleStyle"
>
<option
name=
"OTHER_INDENT_OPTIONS"
>
<option
name=
"OTHER_INDENT_OPTIONS"
>
<value>
<value>
<option
name=
"INDENT_SIZE"
value=
"2"
/>
<option
name=
"INDENT_SIZE"
value=
"2"
/>
<option
name=
"CONTINUATION_INDENT_SIZE"
value=
"4"
/>
<option
name=
"CONTINUATION_INDENT_SIZE"
value=
"4"
/>
<option
name=
"TAB_SIZE"
value=
"2"
/>
<option
name=
"TAB_SIZE"
value=
"2"
/>
<option
name=
"USE_TAB_CHARACTER"
value=
"false"
/>
<option
name=
"SMART_TABS"
value=
"false"
/>
<option
name=
"LABEL_INDENT_SIZE"
value=
"0"
/>
<option
name=
"LABEL_INDENT_ABSOLUTE"
value=
"false"
/>
<option
name=
"USE_RELATIVE_INDENTS"
value=
"false"
/>
</value>
</option>
<option
name=
"INSERT_INNER_CLASS_IMPORTS"
value=
"true"
/>
<option
name=
"CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND"
value=
"999"
/>
<option
name=
"NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND"
value=
"999"
/>
<option
name=
"PACKAGES_TO_USE_IMPORT_ON_DEMAND"
>
<value
/>
</option>
<option
name=
"IMPORT_LAYOUT_TABLE"
>
<value>
<package
name=
""
withSubpackages=
"true"
static=
"true"
/>
<emptyLine
/>
<package
name=
""
withSubpackages=
"true"
static=
"false"
/>
</value>
</value>
</option>
</option>
<option
name=
"RIGHT_MARGIN"
value=
"100"
/>
<option
name=
"RIGHT_MARGIN"
value=
"100"
/>
<option
name=
"JD_ALIGN_PARAM_COMMENTS"
value=
"false"
/>
<option
name=
"JD_ALIGN_EXCEPTION_COMMENTS"
value=
"false"
/>
<option
name=
"JD_P_AT_EMPTY_LINES"
value=
"false"
/>
<option
name=
"JD_KEEP_EMPTY_PARAMETER"
value=
"false"
/>
<option
name=
"JD_KEEP_EMPTY_EXCEPTION"
value=
"false"
/>
<option
name=
"JD_KEEP_EMPTY_RETURN"
value=
"false"
/>
<option
name=
"KEEP_CONTROL_STATEMENT_IN_ONE_LINE"
value=
"false"
/>
<option
name=
"KEEP_BLANK_LINES_BEFORE_RBRACE"
value=
"0"
/>
<option
name=
"KEEP_BLANK_LINES_IN_CODE"
value=
"1"
/>
<option
name=
"BLANK_LINES_AFTER_CLASS_HEADER"
value=
"0"
/>
<option
name=
"ALIGN_MULTILINE_PARAMETERS"
value=
"false"
/>
<option
name=
"ALIGN_MULTILINE_FOR"
value=
"false"
/>
<option
name=
"CALL_PARAMETERS_WRAP"
value=
"1"
/>
<option
name=
"METHOD_PARAMETERS_WRAP"
value=
"1"
/>
<option
name=
"EXTENDS_LIST_WRAP"
value=
"1"
/>
<option
name=
"THROWS_KEYWORD_WRAP"
value=
"1"
/>
<option
name=
"METHOD_CALL_CHAIN_WRAP"
value=
"1"
/>
<option
name=
"BINARY_OPERATION_WRAP"
value=
"1"
/>
<option
name=
"BINARY_OPERATION_SIGN_ON_NEXT_LINE"
value=
"true"
/>
<option
name=
"TERNARY_OPERATION_WRAP"
value=
"1"
/>
<option
name=
"TERNARY_OPERATION_SIGNS_ON_NEXT_LINE"
value=
"true"
/>
<option
name=
"FOR_STATEMENT_WRAP"
value=
"1"
/>
<option
name=
"ARRAY_INITIALIZER_WRAP"
value=
"1"
/>
<option
name=
"WRAP_COMMENTS"
value=
"true"
/>
<option
name=
"IF_BRACE_FORCE"
value=
"3"
/>
<option
name=
"DOWHILE_BRACE_FORCE"
value=
"3"
/>
<option
name=
"WHILE_BRACE_FORCE"
value=
"3"
/>
<option
name=
"FOR_BRACE_FORCE"
value=
"3"
/>
<option
name=
"SPACE_BEFORE_ARRAY_INITIALIZER_LBRACE"
value=
"true"
/>
<AndroidXmlCodeStyleSettings>
<AndroidXmlCodeStyleSettings>
<option
name=
"USE_CUSTOM_SETTINGS"
value=
"true"
/>
<option
name=
"USE_CUSTOM_SETTINGS"
value=
"true"
/>
<option
name=
"LAYOUT_SETTINGS"
>
<option
name=
"LAYOUT_SETTINGS"
>
...
@@ -66,6 +18,69 @@
...
@@ -66,6 +18,69 @@
<JSCodeStyleSettings>
<JSCodeStyleSettings>
<option
name=
"INDENT_CHAINED_CALLS"
value=
"false"
/>
<option
name=
"INDENT_CHAINED_CALLS"
value=
"false"
/>
</JSCodeStyleSettings>
</JSCodeStyleSettings>
<JavaCodeStyleSettings>
<option
name=
"INSERT_INNER_CLASS_IMPORTS"
value=
"true"
/>
<option
name=
"CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND"
value=
"999"
/>
<option
name=
"NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND"
value=
"999"
/>
<option
name=
"PACKAGES_TO_USE_IMPORT_ON_DEMAND"
>
<value
/>
</option>
<option
name=
"IMPORT_LAYOUT_TABLE"
>
<value>
<package
name=
""
withSubpackages=
"true"
static=
"true"
/>
<emptyLine
/>
<package
name=
""
withSubpackages=
"true"
static=
"false"
/>
</value>
</option>
<option
name=
"JD_ALIGN_PARAM_COMMENTS"
value=
"false"
/>
<option
name=
"JD_ALIGN_EXCEPTION_COMMENTS"
value=
"false"
/>
<option
name=
"JD_KEEP_EMPTY_PARAMETER"
value=
"false"
/>
<option
name=
"JD_KEEP_EMPTY_EXCEPTION"
value=
"false"
/>
<option
name=
"JD_KEEP_EMPTY_RETURN"
value=
"false"
/>
<option
name=
"JD_PARAM_DESCRIPTION_ON_NEW_LINE"
value=
"true"
/>
</JavaCodeStyleSettings>
<Objective-C>
<option
name=
"INDENT_NAMESPACE_MEMBERS"
value=
"0"
/>
<option
name=
"INDENT_C_STRUCT_MEMBERS"
value=
"2"
/>
<option
name=
"INDENT_CLASS_MEMBERS"
value=
"2"
/>
<option
name=
"INDENT_VISIBILITY_KEYWORDS"
value=
"1"
/>
<option
name=
"INDENT_INSIDE_CODE_BLOCK"
value=
"2"
/>
<option
name=
"KEEP_STRUCTURES_IN_ONE_LINE"
value=
"true"
/>
<option
name=
"FUNCTION_PARAMETERS_WRAP"
value=
"5"
/>
<option
name=
"FUNCTION_CALL_ARGUMENTS_WRAP"
value=
"5"
/>
<option
name=
"TEMPLATE_CALL_ARGUMENTS_WRAP"
value=
"5"
/>
<option
name=
"TEMPLATE_CALL_ARGUMENTS_ALIGN_MULTILINE"
value=
"true"
/>
<option
name=
"ALIGN_INIT_LIST_IN_COLUMNS"
value=
"false"
/>
<option
name=
"SPACE_BEFORE_SUPERCLASS_COLON"
value=
"false"
/>
</Objective-C>
<Objective-C-extensions>
<option
name=
"GENERATE_INSTANCE_VARIABLES_FOR_PROPERTIES"
value=
"ASK"
/>
<option
name=
"RELEASE_STYLE"
value=
"IVAR"
/>
<option
name=
"TYPE_QUALIFIERS_PLACEMENT"
value=
"BEFORE"
/>
<file>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"Import"
/>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"Macro"
/>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"Typedef"
/>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"Enum"
/>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"Constant"
/>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"Global"
/>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"Struct"
/>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"FunctionPredecl"
/>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"Function"
/>
</file>
<class>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"Property"
/>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"Synthesize"
/>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"InitMethod"
/>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"StaticMethod"
/>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"InstanceMethod"
/>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"DeallocMethod"
/>
</class>
<extensions>
<pair
source=
"cc"
header=
"h"
/>
<pair
source=
"c"
header=
"h"
/>
</extensions>
</Objective-C-extensions>
<Python>
<Python>
<option
name=
"USE_CONTINUATION_INDENT_FOR_ARGUMENTS"
value=
"true"
/>
<option
name=
"USE_CONTINUATION_INDENT_FOR_ARGUMENTS"
value=
"true"
/>
</Python>
</Python>
...
@@ -112,7 +127,12 @@
...
@@ -112,7 +127,12 @@
<codeStyleSettings
language=
"JAVA"
>
<codeStyleSettings
language=
"JAVA"
>
<option
name=
"KEEP_CONTROL_STATEMENT_IN_ONE_LINE"
value=
"false"
/>
<option
name=
"KEEP_CONTROL_STATEMENT_IN_ONE_LINE"
value=
"false"
/>
<option
name=
"KEEP_BLANK_LINES_IN_CODE"
value=
"1"
/>
<option
name=
"KEEP_BLANK_LINES_IN_CODE"
value=
"1"
/>
<option
name=
"BLANK_LINES_AROUND_FIELD"
value=
"1"
/>
<option
name=
"BLANK_LINES_BEFORE_METHOD_BODY"
value=
"1"
/>
<option
name=
"BLANK_LINES_AROUND_FIELD_IN_INTERFACE"
value=
"1"
/>
<option
name=
"BLANK_LINES_AFTER_CLASS_HEADER"
value=
"1"
/>
<option
name=
"BLANK_LINES_AFTER_CLASS_HEADER"
value=
"1"
/>
<option
name=
"BLANK_LINES_AFTER_ANONYMOUS_CLASS_HEADER"
value=
"1"
/>
<option
name=
"BLANK_LINES_BEFORE_CLASS_END"
value=
"1"
/>
<option
name=
"ALIGN_MULTILINE_PARAMETERS"
value=
"false"
/>
<option
name=
"ALIGN_MULTILINE_PARAMETERS"
value=
"false"
/>
<option
name=
"ALIGN_MULTILINE_RESOURCES"
value=
"false"
/>
<option
name=
"ALIGN_MULTILINE_RESOURCES"
value=
"false"
/>
<option
name=
"ALIGN_MULTILINE_FOR"
value=
"false"
/>
<option
name=
"ALIGN_MULTILINE_FOR"
value=
"false"
/>
...
@@ -132,7 +152,6 @@
...
@@ -132,7 +152,6 @@
<option
name=
"DOWHILE_BRACE_FORCE"
value=
"3"
/>
<option
name=
"DOWHILE_BRACE_FORCE"
value=
"3"
/>
<option
name=
"WHILE_BRACE_FORCE"
value=
"3"
/>
<option
name=
"WHILE_BRACE_FORCE"
value=
"3"
/>
<option
name=
"FOR_BRACE_FORCE"
value=
"3"
/>
<option
name=
"FOR_BRACE_FORCE"
value=
"3"
/>
<option
name=
"PARENT_SETTINGS_INSTALLED"
value=
"true"
/>
<indentOptions>
<indentOptions>
<option
name=
"INDENT_SIZE"
value=
"2"
/>
<option
name=
"INDENT_SIZE"
value=
"2"
/>
<option
name=
"CONTINUATION_INDENT_SIZE"
value=
"4"
/>
<option
name=
"CONTINUATION_INDENT_SIZE"
value=
"4"
/>
...
@@ -162,21 +181,29 @@
...
@@ -162,21 +181,29 @@
<option
name=
"DOWHILE_BRACE_FORCE"
value=
"3"
/>
<option
name=
"DOWHILE_BRACE_FORCE"
value=
"3"
/>
<option
name=
"WHILE_BRACE_FORCE"
value=
"3"
/>
<option
name=
"WHILE_BRACE_FORCE"
value=
"3"
/>
<option
name=
"FOR_BRACE_FORCE"
value=
"3"
/>
<option
name=
"FOR_BRACE_FORCE"
value=
"3"
/>
<option
name=
"PARENT_SETTINGS_INSTALLED"
value=
"true"
/>
<indentOptions>
<indentOptions>
<option
name=
"INDENT_SIZE"
value=
"2"
/>
<option
name=
"INDENT_SIZE"
value=
"2"
/>
<option
name=
"TAB_SIZE"
value=
"2"
/>
<option
name=
"TAB_SIZE"
value=
"2"
/>
</indentOptions>
</indentOptions>
</codeStyleSettings>
</codeStyleSettings>
<codeStyleSettings
language=
"
PROTO
"
>
<codeStyleSettings
language=
"
ObjectiveC
"
>
<option
name=
"RIGHT_MARGIN"
value=
"80"
/>
<option
name=
"RIGHT_MARGIN"
value=
"80"
/>
<option
name=
"KEEP_BLANK_LINES_BEFORE_RBRACE"
value=
"1"
/>
<option
name=
"BLANK_LINES_BEFORE_IMPORTS"
value=
"0"
/>
<option
name=
"BLANK_LINES_AFTER_IMPORTS"
value=
"0"
/>
<option
name=
"BLANK_LINES_AROUND_CLASS"
value=
"0"
/>
<option
name=
"BLANK_LINES_AROUND_METHOD"
value=
"0"
/>
<option
name=
"BLANK_LINES_AROUND_METHOD_IN_INTERFACE"
value=
"0"
/>
<option
name=
"ALIGN_MULTILINE_BINARY_OPERATION"
value=
"false"
/>
<option
name=
"BINARY_OPERATION_SIGN_ON_NEXT_LINE"
value=
"true"
/>
<option
name=
"FOR_STATEMENT_WRAP"
value=
"1"
/>
<option
name=
"ASSIGNMENT_WRAP"
value=
"1"
/>
<indentOptions>
<indentOptions>
<option
name=
"INDENT_SIZE"
value=
"2"
/>
<option
name=
"INDENT_SIZE"
value=
"2"
/>
<option
name=
"CONTINUATION_INDENT_SIZE"
value=
"2"
/>
<option
name=
"CONTINUATION_INDENT_SIZE"
value=
"4"
/>
<option
name=
"TAB_SIZE"
value=
"2"
/>
</indentOptions>
</indentOptions>
</codeStyleSettings>
</codeStyleSettings>
<codeStyleSettings
language=
"
protobuf
"
>
<codeStyleSettings
language=
"
PROTO
"
>
<option
name=
"RIGHT_MARGIN"
value=
"80"
/>
<option
name=
"RIGHT_MARGIN"
value=
"80"
/>
<indentOptions>
<indentOptions>
<option
name=
"INDENT_SIZE"
value=
"2"
/>
<option
name=
"INDENT_SIZE"
value=
"2"
/>
...
@@ -536,63 +563,12 @@
...
@@ -536,63 +563,12 @@
</rules>
</rules>
</arrangement>
</arrangement>
</codeStyleSettings>
</codeStyleSettings>
<Objective-C>
<codeStyleSettings
language=
"protobuf"
>
<option
name=
"INDENT_NAMESPACE_MEMBERS"
value=
"0"
/>
<option
name=
"INDENT_C_STRUCT_MEMBERS"
value=
"2"
/>
<option
name=
"INDENT_CLASS_MEMBERS"
value=
"2"
/>
<option
name=
"INDENT_VISIBILITY_KEYWORDS"
value=
"1"
/>
<option
name=
"INDENT_INSIDE_CODE_BLOCK"
value=
"2"
/>
<option
name=
"KEEP_STRUCTURES_IN_ONE_LINE"
value=
"true"
/>
<option
name=
"FUNCTION_PARAMETERS_WRAP"
value=
"5"
/>
<option
name=
"FUNCTION_CALL_ARGUMENTS_WRAP"
value=
"5"
/>
<option
name=
"TEMPLATE_CALL_ARGUMENTS_WRAP"
value=
"5"
/>
<option
name=
"TEMPLATE_CALL_ARGUMENTS_ALIGN_MULTILINE"
value=
"true"
/>
<option
name=
"ALIGN_INIT_LIST_IN_COLUMNS"
value=
"false"
/>
<option
name=
"SPACE_BEFORE_SUPERCLASS_COLON"
value=
"false"
/>
</Objective-C>
<Objective-C-extensions>
<option
name=
"GENERATE_INSTANCE_VARIABLES_FOR_PROPERTIES"
value=
"ASK"
/>
<option
name=
"RELEASE_STYLE"
value=
"IVAR"
/>
<option
name=
"TYPE_QUALIFIERS_PLACEMENT"
value=
"BEFORE"
/>
<file>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"Import"
/>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"Macro"
/>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"Typedef"
/>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"Enum"
/>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"Constant"
/>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"Global"
/>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"Struct"
/>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"FunctionPredecl"
/>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"Function"
/>
</file>
<class>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"Property"
/>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"Synthesize"
/>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"InitMethod"
/>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"StaticMethod"
/>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"InstanceMethod"
/>
<option
name=
"com.jetbrains.cidr.lang.util.OCDeclarationKind"
value=
"DeallocMethod"
/>
</class>
<extensions>
<pair
source=
"cc"
header=
"h"
/>
<pair
source=
"c"
header=
"h"
/>
</extensions>
</Objective-C-extensions>
<codeStyleSettings
language=
"ObjectiveC"
>
<option
name=
"RIGHT_MARGIN"
value=
"80"
/>
<option
name=
"RIGHT_MARGIN"
value=
"80"
/>
<option
name=
"KEEP_BLANK_LINES_BEFORE_RBRACE"
value=
"1"
/>
<option
name=
"BLANK_LINES_BEFORE_IMPORTS"
value=
"0"
/>
<option
name=
"BLANK_LINES_AFTER_IMPORTS"
value=
"0"
/>
<option
name=
"BLANK_LINES_AROUND_CLASS"
value=
"0"
/>
<option
name=
"BLANK_LINES_AROUND_METHOD"
value=
"0"
/>
<option
name=
"BLANK_LINES_AROUND_METHOD_IN_INTERFACE"
value=
"0"
/>
<option
name=
"ALIGN_MULTILINE_BINARY_OPERATION"
value=
"false"
/>
<option
name=
"BINARY_OPERATION_SIGN_ON_NEXT_LINE"
value=
"true"
/>
<option
name=
"FOR_STATEMENT_WRAP"
value=
"1"
/>
<option
name=
"ASSIGNMENT_WRAP"
value=
"1"
/>
<indentOptions>
<indentOptions>
<option
name=
"INDENT_SIZE"
value=
"2"
/>
<option
name=
"INDENT_SIZE"
value=
"2"
/>
<option
name=
"CONTINUATION_INDENT_SIZE"
value=
"4"
/>
<option
name=
"CONTINUATION_INDENT_SIZE"
value=
"2"
/>
<option
name=
"TAB_SIZE"
value=
"2"
/>
</indentOptions>
</indentOptions>
</codeStyleSettings>
</codeStyleSettings>
</code_scheme>
</code_scheme>
\ No newline at end of file
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment