Commit 03e4f217 authored by zengchao's avatar zengchao
Browse files

处理后端接口

parent fee318d4
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;
}
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;
}
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();
}
}
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.List;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.beetl.sql.core.engine.PageQuery;
......@@ -15,19 +24,6 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
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 */
@Controller
public class MenuController {
......@@ -70,7 +66,6 @@ public class MenuController {
/**
* 查询
*
* @param menu
* @return
*/
@PostMapping(MODEL + "/list/condition.json")
......@@ -117,7 +112,7 @@ public class MenuController {
@ResponseBody
public JsonResult update(CoreMenu fun) {
menuService.updateMenu(fun);
return new JsonResult().success();
return JsonResult.success();
}
/**
......@@ -149,7 +144,7 @@ public class MenuController {
@ResponseBody
public JsonResult delete(Long id) {
menuService.deleteMenu(id);
return new JsonResult().success();
return JsonResult.success();
}
/**
......@@ -164,6 +159,6 @@ public class MenuController {
public JsonResult delete(String ids) {
List<Long> dels = ConvertUtil.str2longs(ids);
menuService.batchDeleteMenuId(dels);
return new JsonResult().success();
return JsonResult.success();
}
}
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.entity.CoreRoute;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
......@@ -24,15 +24,6 @@ public class CustomBeanProcessorTest {
@Test
public void test() {
for (int i = 0; i < 1000; i++) {
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);
}
VOUtil.resolveElColumn(Table.class);
}
}
......@@ -13,6 +13,7 @@ import com.ibeetl.admin.core.conf.resultmap.GridRow;
import com.ibeetl.admin.core.util.CacheUtil;
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
......@@ -23,8 +24,11 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
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.mapping.BeanProcessor;
import org.beetl.sql.core.mapping.type.JavaSqlTypeHandler;
import org.beetl.sql.core.mapping.type.TypeParameter;
public class JsonBeanProcessor extends BeanProcessor {
......@@ -96,15 +100,15 @@ public class JsonBeanProcessor extends BeanProcessor {
/*复杂结果集映射,取消TailBean的便利性*/
rs.absolute(0);
mapping.setNestedRows(null);
fillMappingRow(rs, mapping);
fillMappingRow(sqlId, rs, mapping);
results = convertMapping(mapping, type);
}
return CollUtil.getFirst(results);
}
/**
*
* 将ResultSet映射为一个List&lt;POJO&gt;集合
*
* @param sqlId
* @param rs
* @param type
......@@ -133,7 +137,7 @@ public class JsonBeanProcessor extends BeanProcessor {
/*复杂结果集映射,取消TailBean的便利性*/
rs.absolute(0);
mapping.getNestedRows().clear();
fillMappingRow(rs, mapping);
fillMappingRow(sqlId, rs, mapping);
results = convertMapping(mapping, type);
}
return results;
......@@ -179,7 +183,7 @@ public class JsonBeanProcessor extends BeanProcessor {
List<GridRow> nestedRows = nestedColumn.getNestedRows();
for (GridRow nestedRow : nestedRows) {
if (StrUtil.isNotBlank(resultType)) {
/*在映射中标明类型,证明是复杂类型*/
/*在映射中标明类型,表示是复杂类型*/
Class nestedPropType = ClassUtil.loadClass(resultType);
String nestedPropName = mappingHeader.getNestedPropName();
boolean isCollection = mappingHeader.getIsCollection();
......@@ -193,12 +197,12 @@ public class JsonBeanProcessor extends BeanProcessor {
}
BeanUtil.setFieldValue(obj, nestedPropName, resultObj);
} else {
/*在映射中没有标明类型,证明是基本类型*/
/*在映射中没有标明类型,表示是基本类型*/
String nestedPropName = mappingHeader.getNestedPropName();
boolean isCollection = mappingHeader.getIsCollection();
Object resultObj = BeanUtil.getFieldValue(obj, nestedPropName);
Map<String, Object> beanMap = nestedRow.getNestedColumns().get(0).getBeanMap();
/*几乎此处说明内嵌的字段是一个基本类型集合,所以beanmap中应该只有一个值*/
/*无法递归,表明是基本类型集合*/
Object nestedPropObj = CollUtil.getFirst(beanMap.values());
if (isCollection) {
((Collection) resultObj).add(nestedPropObj);
......@@ -210,7 +214,6 @@ public class JsonBeanProcessor extends BeanProcessor {
}
}
}
/*TODO 重写,以便提供命名转换*/
BeanUtil.fillBeanWithMap(curObjCol.getBeanMap(), obj, true, true);
return obj;
}
......@@ -221,21 +224,27 @@ public class JsonBeanProcessor extends BeanProcessor {
* @param mapping
* @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();
GridColumn column = new GridColumn();
while (resultSet.next()) {
List<GridRow> mappingNestedRows = mapping.getNestedRows();
GridRow row = fillRowColumn(resultSet, header, column);
GridRow row = fillRowColumn(sqlId, resultSet, header, column);
if (!mappingNestedRows.contains(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,如果没有,则插入一个*/
Map<String, Object> beanMap = extractMapFromRs(resultSet, header);
Map<String, Object> beanMap = extractMapFromRs(sqlId, resultSet, header);
Integer calculateKey = GridColumn.calculateKey(beanMap);
GridRow row = column.findRowByKey(calculateKey);
/*这里可能出现一个问题,始终第0个行是空白的*/
......@@ -250,7 +259,7 @@ public class JsonBeanProcessor extends BeanProcessor {
for (GridHeader nestedHeader : nestedHeaders) {
GridColumn nestedColumn = row.findColumnByHeader(nestedHeader);
List<GridRow> nestedRows = nestedColumn.getNestedRows();
GridRow nestedRow = fillRowColumn(resultSet, nestedHeader, nestedColumn);
GridRow nestedRow = fillRowColumn(sqlId, resultSet, nestedHeader, nestedColumn);
if (!nestedRows.contains(nestedRow)) {
nestedRows.add(nestedRow);
}
......@@ -261,22 +270,59 @@ public class JsonBeanProcessor extends BeanProcessor {
/**
* 遍历网格头,由网格头的信息从结果集中读取值。<br>
* 这样做的好处是方便算法编写;坏处是失去了tailbean的处理,因为无法确定结果集列的读取状态。
*
* @param resultSet
* @param header
* @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, 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();
Set<Entry<String, String>> entrySet = javaToJdbcMap.entrySet();
for (Entry<String, String> entry : entrySet) {
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) {
/*普遍错误:从resultset中获取一个不存在的列,但可以忽视*/
/*大部分错误:从resultset中获取一个不存在的列,但可以忽视*/
}
}
return tempBeanMap;
......
package com.ibeetl.admin.core.service.vea;
package com.ibeetl.admin.core.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
......@@ -19,7 +19,7 @@ import org.springframework.transaction.annotation.Transactional;
@Slf4j
@Service
@Transactional
public class RoleRoutesService {
public class RoleRoutesElService {
@Autowired private CoreFunctionDao coreFunctionDao;
......
package com.ibeetl.admin.core.web.vea;
package com.ibeetl.admin.core.web;
import cn.hutool.core.map.MapUtil;
import com.ibeetl.admin.core.annotation.RequestBodyPlus;
......@@ -7,7 +7,7 @@ import com.ibeetl.admin.core.entity.CoreRoute;
import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.rbac.UserLoginInfo;
import com.ibeetl.admin.core.rbac.UserRoleInfo;
import com.ibeetl.admin.core.service.vea.RoleRoutesService;
import com.ibeetl.admin.core.service.RoleRoutesElService;
import com.ibeetl.admin.core.service.CoreUserService;
import com.ibeetl.admin.core.util.HttpRequestLocal;
import com.ibeetl.admin.core.util.JoseJwtUtil;
......@@ -21,9 +21,9 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserRestController {
public class UserElController {
@Autowired private RoleRoutesService roleRoutesService;
@Autowired private RoleRoutesElService roleRoutesService;
@Autowired private CoreUserService coreUserService;
......
<?xml version="1.0" encoding="UTF-8"?>
<code_scheme name="GoogleStyle">
<code_scheme name="GoogleStyle" version="173">
<option name="OTHER_INDENT_OPTIONS">
<value>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="4" />
<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>
</option>
<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>
<option name="USE_CUSTOM_SETTINGS" value="true" />
<option name="LAYOUT_SETTINGS">
......@@ -66,6 +18,69 @@
<JSCodeStyleSettings>
<option name="INDENT_CHAINED_CALLS" value="false" />
</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>
<option name="USE_CONTINUATION_INDENT_FOR_ARGUMENTS" value="true" />
</Python>
......@@ -112,7 +127,12 @@
<codeStyleSettings language="JAVA">
<option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false" />
<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_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_RESOURCES" value="false" />
<option name="ALIGN_MULTILINE_FOR" value="false" />
......@@ -132,7 +152,6 @@
<option name="DOWHILE_BRACE_FORCE" value="3" />
<option name="WHILE_BRACE_FORCE" value="3" />
<option name="FOR_BRACE_FORCE" value="3" />
<option name="PARENT_SETTINGS_INSTALLED" value="true" />
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="4" />
......@@ -162,21 +181,29 @@
<option name="DOWHILE_BRACE_FORCE" value="3" />
<option name="WHILE_BRACE_FORCE" value="3" />
<option name="FOR_BRACE_FORCE" value="3" />
<option name="PARENT_SETTINGS_INSTALLED" value="true" />
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="TAB_SIZE" value="2" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="PROTO">
<codeStyleSettings language="ObjectiveC">
<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>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="2" />
<option name="TAB_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="protobuf">
<codeStyleSettings language="PROTO">
<option name="RIGHT_MARGIN" value="80" />
<indentOptions>
<option name="INDENT_SIZE" value="2" />
......@@ -536,63 +563,12 @@
</rules>
</arrangement>
</codeStyleSettings>
<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>
<codeStyleSettings language="ObjectiveC">
<codeStyleSettings language="protobuf">
<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>
<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>
</codeStyleSettings>
</code_scheme>
</code_scheme>
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment