public class IgnoreFieldPlug extends PluginAdapter {
    @Override
    public boolean sqlMapUpdateByExampleSelectiveElementGenerated(XmlElement element, IntrospectedTable introspectedTable) {
        removeTimeAttribute(element);
        return super.sqlMapUpdateByExampleSelectiveElementGenerated(element, introspectedTable);
    }
    @Override
    public boolean sqlMapUpdateByPrimaryKeySelectiveElementGenerated(XmlElement element, IntrospectedTable introspectedTable) {
        removeTimeAttribute(element);
        return super.sqlMapUpdateByPrimaryKeySelectiveElementGenerated(element, introspectedTable);
    }
    @Override
    public boolean sqlMapUpdateByExampleWithoutBLOBsElementGenerated(XmlElement element, IntrospectedTable introspectedTable) {
//        removeTimeTextAttribute(element);
        removeTimeTextAttribute(element);
        return super.sqlMapUpdateByExampleWithoutBLOBsElementGenerated(element, introspectedTable);
    }
    @Override
    public boolean sqlMapUpdateByPrimaryKeyWithoutBLOBsElementGenerated(XmlElement element, IntrospectedTable introspectedTable) {
        removeTimeTextAttribute(element);
        return super.sqlMapUpdateByPrimaryKeyWithoutBLOBsElementGenerated(element, introspectedTable);
    }
    private void removeTimeTextAttribute(XmlElement element) {
        List<Element> elements = element.getElements();
        int removeCommaIndex=0;
        TextElement replaceElement=null;
        Iterator<Element> iterator = elements.iterator();
        while (iterator.hasNext()){
            Element baseElements=elements.get(i);
            if (baseElements instanceof TextElement){
                TextElement targetElment=(TextElement)baseElements;
                if(targetElment.getContent().contains("update_time")||targetElment.getContent().contains("create_time")){
                    iterator.remove();
                }
            }
            if (baseElements instanceof TextElement){
                TextElement targetElment=(TextElement)baseElements;
                if(targetElment.getContent().contains("where")){
                    removeCommaIndex=i-1;
                    replaceElement=(TextElement)(elements.get(removeCommaIndex));
                    String content = replaceElement.getContent().trim();
                    replaceElement=new TextElement(content.substring(0,content.length()-1));
                }
            }
            iterator.next();
        }
    }
    public boolean validate(List<String> warnings)
    {
        return true;
    }
    private void removeTimeAttribute(XmlElement element) {
        List<Element> elements = element.getElements();
        Iterator<Element> iterator = elements.iterator();
        while (iterator.hasNext()){
            Element baseElements=elements.get(i);
            if (!(baseElements instanceof XmlElement)){
                continue;
            }
            XmlElement targetElment=(XmlElement)baseElements;
            if(targetElment.getName().contains("set")){
                List<Element> innerElements = targetElment.getElements();
                for (int i1 = 0; i1 < innerElements.size(); i1++) {
                    Element baseInnerElements=elements.get(i);
                    if (!(baseInnerElements instanceof XmlElement)){
                        continue;
                    }
                    targetElment=(XmlElement)innerElements.get(i1);
                    Iterator<Attribute> attributeIterator = targetElment.getAttributes().iterator();
                    while (attributeIterator.hasNext()){
                        attributeIterator.remove();
                    }
                }
            }
        }
    }
}