use of org.dom4j.Attribute in project CodeUtils by boredream.
the class TempUtils method autoCreateSizeSet.
/**
* 自动生成TextView size设置代码
*
* @param isAutoSetId
* 是否自动给没有id的TextView添加id
*/
public static void autoCreateSizeSet(boolean isAutoSetId) {
// TODO 自动设置文字id的前缀
String tvId4SetSizePre = "@+id/tv_set_size";
// 自动设置文字id的后缀
int tvId4SetSizeEnd = 1;
// TODO 项目中的文字大小数组,项目中如果有变化需要修改此处
Integer[] TEXT_SIZE = { 20, 18, 16, 14, 12, 28 };
// 数组转成集合,方便indexOf操作
List<Integer> TEXT_SIZE_LIST = Arrays.asList(TEXT_SIZE);
// TODO 如果size不在集合中,则默认获取的索引
int defaultIndex = 2;
Document document = XmlUtil.read("temp" + File.separator + "SetSize" + File.separator + "layout_size.xml");
List<Element> docElements = XmlUtil.getAllElements(document);
List<IdNamingBean> tvIdNameBeans = new ArrayList<IdNamingBean>();
StringBuilder sbSetTextSize = new StringBuilder();
// 遍历layout中全部元素
for (int i = 0; i < docElements.size(); i++) {
Element element = docElements.get(i);
// 如果不是TextView,跳过
if (!element.getName().equals("TextView")) {
continue;
}
// //////////// 处理textSize ////////////////
Attribute attrTextSize = element.attribute("textSize");
// TODO 另一种处理,没有textSize参数时不做setSize操作
// if(attrTextSize == null) {
// System.out.println("布局内第" + i + "个控件TextView未设置textSize");
// continue;
// }
int indexOf = -1;
if (attrTextSize == null) {
// 没有textSize参数时,取默认的size
indexOf = defaultIndex;
} else {
// 有textSize再去数据中获取索引
int textSizeNum = -1;
// 获取文字大小
String textSize = attrTextSize.getValue().replace("dp", "").replace("dip", "").replace("px", "").replace("sp", "");
try {
textSizeNum = Integer.parseInt(textSize);
} catch (Exception e) {
textSizeNum = -1;
}
if (textSizeNum == -1) {
System.out.println("布局内第" + i + "个控件TextView的textSize格式不对");
continue;
}
indexOf = TEXT_SIZE_LIST.indexOf(textSizeNum);
if (indexOf == -1) {
// TODO 另一种处理,获取不到时不做setSize操作
// System.out.println("布局内第" + i +
// "个TextView的textSize不在TEXT_SIZE数组中");
// continue;
// 获取不到时,去默认索引位置的size
indexOf = defaultIndex;
}
}
// //////////// 处理id ////////////////
Attribute attrID = element.attribute("id");
String id = null;
if (attrID == null) {
// 如果没有id,且需要自动设置一个
if (isAutoSetId) {
id = tvId4SetSizePre + (tvId4SetSizeEnd++);
element.addAttribute("android:id", id);
}
} else {
// 如果已有id
id = attrID.getValue();
}
if (id == null) {
System.out.println("布局内第" + i + "个控件TextView没有id的不做处理");
continue;
}
// 去除"@+id/"后的id名称
String idName = id.replace("@+id/", "");
tvIdNameBeans.add(new IdNamingBean(element.getName(), idName, element));
// 例 tv_set_size1.setTextSize(Constant.TEXT_SIZE[0] *
// TxtManager.getInstance().getTxtSize(this));
String setSizeLine = idName + ".setTextSize(Constant.TEXT_SIZE[" + indexOf + "] * TxtManager.getInstance().getTxtSize(this));";
sbSetTextSize.append(StringUtils.formatSingleLine(2, setSizeLine));
}
// 如果要自动setId则将设置好id的xml写回布局layout_size_new.xml中
if (isAutoSetId) {
XmlUtil.write2xml(new File("temp" + File.separator + "SetSize" + File.separator + "layout_size_new.xml"), document);
}
AndroidUtils.idNamingBeans = tvIdNameBeans;
// 解析idNamingBeans集合中的信息,生成页面文本信息
String activityContent = AndroidUtils.createActivityContent();
// 封装到onResume里
// @Override
// protected void onResume() {
// super.onResume();
// tv_set_size1.setTextSize(Constant.TEXT_SIZE[0] *
// TxtManager.getInstance().getTxtSize(context))
// }
sbSetTextSize.insert(0, StringUtils.formatSingleLine(2, "super.onResume();"));
sbSetTextSize.insert(0, StringUtils.formatSingleLine(1, "protected void onResume() {"));
sbSetTextSize.insert(0, StringUtils.formatSingleLine(1, "@Override"));
sbSetTextSize.append(StringUtils.formatSingleLine(1, "}"));
activityContent += sbSetTextSize.toString();
FileUtils.writeString2File(activityContent, new File("temp" + File.separator + "SetSize" + File.separator + "Layout_Size.java"));
System.out.println("--------------");
System.out.println("代码生成正确,请在SetSize/Layout_Size.java中查看");
}
use of org.dom4j.Attribute in project CodeUtils by boredream.
the class AndroidUtils method createActivityContent.
/**
* 生成activity文件内容
*/
public static String createActivityContent() {
StringBuilder sb = new StringBuilder();
sb.append("\n\n");
// private TextView tv_name;
for (IdNamingBean bean : idNamingBeans) {
sb.append(StringUtils.formatSingleLine(1, "private " + bean.getViewName() + " " + bean.getIdName() + ";"));
}
sb.append("\n");
// 生成initView自定义方法,并在其中依次findViewById为view成员变量赋值
// private void initView() {
// tv_name = (TextView)findViewById(R.id.tv_name);
// }
sb.append(StringUtils.formatSingleLine(1, "private void initView() {"));
for (IdNamingBean bean : idNamingBeans) {
sb.append(StringUtils.formatSingleLine(2, bean.getIdName() + " = " + "(" + bean.getViewName() + ") findViewById(R.id." + bean.getIdName() + ");"));
}
sb.append("\n");
// 是否包含EditText控件,如果包含,自动生成非空判断代码
boolean hasEditText = false;
///**
// * TODO 使用输入内容,可根据需要自行修改补充本方法
// */
//private void submit() {
// // 开始验证输入内容
// String content = et_content.getText().toString().trim();
// if(!TextUtils.isEmpty(content)) {
// Toast.makeText(this, "content不能为空", Toast.LENGTH_SHORT).show();
// return;
// }
//
// // TODO 验证成功,下面开始使用数据
//
//
//}
StringBuilder sbEditText = new StringBuilder();
sbEditText.append("\n");
sbEditText.append(StringUtils.formatSingleLine(1, "/**"));
sbEditText.append(StringUtils.formatSingleLine(1, " * TODO 输入验证,可根据需要自行修改补充"));
sbEditText.append(StringUtils.formatSingleLine(1, " */"));
sbEditText.append(StringUtils.formatSingleLine(1, "private void submit() {"));
sbEditText.append(StringUtils.formatSingleLine(2, "// 开始验证输入内容"));
for (IdNamingBean bean : idNamingBeans) {
Attribute attrTag = bean.getElement().attribute("tag");
// 只判断EditText控件
if (bean.getViewName().equals("EditText")) {
// 带有可选标识(tag为optional)的EditText不做非空验证
if (attrTag != null && attrTag.getValue().equals("optional")) {
continue;
}
// 截取最后一个_后面的内容作为名称,不包含_时使用全部id作为名称
String idName = bean.getIdName();
int index = idName.lastIndexOf("_");
String name = index == -1 ? idName : idName.substring(index + 1);
sbEditText.append(StringUtils.formatSingleLine(2, "String " + name + " = " + idName + ".getText().toString().trim();"));
sbEditText.append(StringUtils.formatSingleLine(2, "if(TextUtils.isEmpty(" + name + ")) {"));
sbEditText.append(StringUtils.formatSingleLine(3, "Toast.makeText(this, \"" + name + "不能为空\", Toast.LENGTH_SHORT).show();"));
sbEditText.append(StringUtils.formatSingleLine(3, "return;"));
sbEditText.append(StringUtils.formatSingleLine(2, "}"));
sbEditText.append(StringUtils.formatSingleLine(2, ""));
hasEditText = true;
}
}
sbEditText.append(StringUtils.formatSingleLine(2, "// TODO 验证成功,下面开始使用数据"));
sbEditText.append(StringUtils.formatSingleLine(2, ""));
sbEditText.append(StringUtils.formatSingleLine(2, ""));
sbEditText.append(StringUtils.formatSingleLine(1, "}"));
// 是否包含可点击的控件,如果包含,自动生成onClick相关代码
boolean hasClickView = false;
// 点击事件复写的onclick方法
// @Override
// public void onClick(View v) {
// switch (v.getId()) {
// case R.id.btn_ok:
// // doSomething
// break;
// }
// }
StringBuilder sbOnClick = new StringBuilder();
sbOnClick.append("\n");
sbOnClick.append(StringUtils.formatSingleLine(1, "@Override"));
sbOnClick.append(StringUtils.formatSingleLine(1, "public void onClick(View v) {"));
sbOnClick.append(StringUtils.formatSingleLine(2, "switch (v.getId()) {"));
for (IdNamingBean bean : idNamingBeans) {
Attribute attrClickable = bean.getElement().attribute("clickable");
// 只设置Button的点击事件,和参数包含clickable=true的控件
if (bean.getViewName().equals("Button") || (attrClickable != null && attrClickable.getValue().equals("true"))) {
// 设置监听
// btn_ok.setOnClickListener(this);
sb.append(StringUtils.formatSingleLine(2, bean.getIdName() + ".setOnClickListener(this);"));
// 在onclick中分别处理不同id的点击
sbOnClick.append(StringUtils.formatSingleLine(2, "case R.id." + bean.getIdName() + ":"));
sbOnClick.append("\n");
sbOnClick.append(StringUtils.formatSingleLine(3, "break;"));
hasClickView = true;
}
}
sbOnClick.append(StringUtils.formatSingleLine(2, "}"));
sbOnClick.append(StringUtils.formatSingleLine(1, "}"));
// 是否包含RadioGroup/Button等控件,如果包含,自动生成onCheckChanged相关代码
boolean hasCheckedView = false;
// 点击事件复写的onclick方法
// @Override
// public void onCheckedChanged(RadioGroup group, int checkedId) {
// switch (checkedId) {
// case R.id.rb_home:
// // doSomething
// break;
// }
// }
StringBuilder sbOnChecked = new StringBuilder();
sbOnChecked.append("\n");
sbOnChecked.append(StringUtils.formatSingleLine(1, "@Override"));
sbOnChecked.append(StringUtils.formatSingleLine(1, "public void onCheckedChanged(RadioGroup group, int checkedId) {"));
sbOnChecked.append(StringUtils.formatSingleLine(2, "switch (checkedId) {"));
for (IdNamingBean bean : idNamingBeans) {
// 只设置Button的点击事件,和参数包含clickable=true的控件
if (bean.getViewName().equals("RadioGroup")) {
// 设置监听
// rg.setOnCheckedChangeListener(this);
sb.append(StringUtils.formatSingleLine(2, bean.getIdName() + ".setOnCheckedChangeListener(this);"));
hasCheckedView = true;
} else if (bean.getViewName().equals("RadioButton")) {
// 在onCheckedChanged中分别处理不同id的选中
sbOnChecked.append(StringUtils.formatSingleLine(2, "case R.id." + bean.getIdName() + ":"));
sbOnChecked.append("\n");
sbOnChecked.append(StringUtils.formatSingleLine(3, "break;"));
hasCheckedView = true;
}
}
sbOnChecked.append(StringUtils.formatSingleLine(2, "}"));
sbOnChecked.append(StringUtils.formatSingleLine(1, "}"));
sb.append(StringUtils.formatSingleLine(1, "}\n"));
sb.append("\n");
if (hasClickView) {
sb.append(sbOnClick);
}
if (hasCheckedView) {
sb.append(sbOnChecked);
}
if (hasEditText) {
sb.append(sbEditText);
}
String activityContent = sb.toString();
return activityContent;
}
use of org.dom4j.Attribute in project CodeUtils by boredream.
the class XmlUtil method replaceAttrValue.
/**
* 替换XML文件中attribute的value值
* @param tarDoc 目标document
* @param tarStrList 目标替换文字,模糊替换,即只要匹配list集合里中其中一个就会被抽取替换
* @param replacement 替换成的内容
* @param matchAttr 匹配参数名,即只会替换该参数名对应的值,null时不做筛选
* @return 是否有替换操作
*/
@SuppressWarnings("unchecked")
public static boolean replaceAttrValue(Document tarDoc, List<String> tarStrList, String replacement, String matchAttr) {
boolean hasReplace = false;
List<Element> tarElements = XmlUtil.getAllElements(tarDoc);
for (Element element : tarElements) {
List<Attribute> attrs = element.attributes();
for (Attribute attr : attrs) {
if (matchAttr == null || !attr.getName().equals(matchAttr + "")) {
continue;
}
String attrValue = attr.getValue();
int index = tarStrList.indexOf(attrValue);
if (index != -1) {
attr.setValue(attrValue.replace(tarStrList.get(index), replacement));
hasReplace = true;
}
}
}
return hasReplace;
}
use of org.dom4j.Attribute in project pentaho-platform by pentaho.
the class BiPlatformRepositoryClientNavigationService method getVisible.
private boolean getVisible(Element element) {
boolean visible = true;
// $NON-NLS-1$
Attribute attr = element.attribute("visible");
if (attr != null) {
// $NON-NLS-1$
visible = "true".equalsIgnoreCase(attr.getText());
}
return visible;
}
use of org.dom4j.Attribute in project pentaho-platform by pentaho.
the class BiPlatformRepositoryClientNavigationService method getLastModifiedDate.
private Calendar getLastModifiedDate(Element element) {
// $NON-NLS-1$
String lastModifiedDateStr = "";
// $NON-NLS-1$
Attribute attr = element.attribute("lastModifiedDate");
if (attr != null) {
lastModifiedDateStr = attr.getText();
long millis = new Long(lastModifiedDateStr);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(millis);
return calendar;
}
return null;
}
Aggregations