在多对多去重复

来源:互联网 发布:淘宝宝贝描述源代码 编辑:程序博客网 时间:2024/04/29 09:28

public DomainGroup addOrUpdateDomainString(String action, String domainList,String searchList, DomainGroup domainGroups) {
  List<Domain> domains = new ArrayList<Domain>();
  List<Domain> searchDomains=new ArrayList<Domain>();
  String domainGroupName=domainGroups.getDomainGroupName();
  int domainGroupId=domainGroups.getDomainGroupId();
  domains = uniqueDomain(domainList,1);
  searchDomains=uniqueDomain(searchList,2);
  DomainGroup domainGroup = new DomainGroup();
  if (action == "add") {
   domainGroup.setDomainGroupName(domainGroupName);
   this.insertDomainGroup(domainGroup);
   domainGroup = this.getDomainGroupByDomainGroupName(domainGroupName);
  } else {
   domainGroup = this.getDomainGroupByDomainGroupId(domainGroupId);
  }  

  if (domainGroup != null) {
            if(domainGroup.getDomains() != null)
                processUpdateExistingDomain(domainGroup.getDomains(),domains);
                System.out.println(domains.size());
                processUpdateExistingDomain(domainGroup.getDomains(),searchDomains);
                System.out.println(searchDomains.size());
                domainGroup.setDomains(domains);
                domainGroup.getDomains().addAll(searchDomains);
                System.out.println(domainGroup.getDomains().size());
       this.updateDomainGroup(domainGroup);
  }

  return domainGroup;
 }
 
 private List<Domain> uniqueDomain(String domainList,int searchType) {
  List<Domain> domains = new ArrayList<Domain>();
  List<Domain> existingList = this.getAllDomainsBySearchType(searchType);
        List<Domain> newDomainList = new ArrayList<Domain>();
        String[] domain_arr = domainList.split("/n");

  for (String dword : domain_arr) {
   boolean duplicate = false;

   Domain domain = null;
   dword = processKeyword(dword.trim());
            for ( Domain d : existingList ){
                if(d.getDomainName().equalsIgnoreCase(dword) && d.getSearchType()==searchType){
                 domain = d;
                    existingList.remove(d);
                    break;
                }
            }
    
            if (domain == null && domains.size() > 0 ){
                for (Domain d : domains) {
                    if (d.getDomainName().equalsIgnoreCase(dword)) {
                     domain = d;
                        break;
                    }
                }
            }

            if ( domain == null){
             domain = new Domain();
             domain.setDomainName(dword);
             domain.setSearchType(searchType);
                if (newDomainList.size() == 0 ){
                 newDomainList.add(domain);
                }else{
                    for (Domain d : newDomainList) {
         if (d.getDomainName().equalsIgnoreCase(domain.getDomainName()) && d.getSearchType()==searchType) {
          duplicate = true;
          break;
         }
    }
    if ( !duplicate )
     newDomainList.add(domain);
                }
            }else{
                if (domains.size() == 0 )
                 domains.add(domain);
                else {
                    for (Domain d : domains) {
                        if (d.getDomainName().equalsIgnoreCase(domain.getDomainName()) && d.getSearchType()==searchType) {
                            duplicate = true;
                            break;
                        }
                    }
                    if ( !duplicate )
                     domains.add(domain);
                }
            }
        }

        if(newDomainList.size() > 0){
            this.insertDomains(newDomainList);
            domains.addAll(newDomainList);
        }

        return domains;
 }
 
  
 private void processUpdateExistingDomain(List<Domain> originalDomains, List<Domain> newDomains){
      if(!(originalDomains==null)){
  for(Domain newDomain : newDomains){
            for(Domain originalDomain : originalDomains){
                if (originalDomain.getDomainName().equalsIgnoreCase(newDomain.getDomainName())){
                 originalDomains.remove(originalDomain);
                    break;
                }
            }
        }
     
      }
    }
 
 
 private String processKeyword(String keyword){
        return Pattern.compile("[///"']").matcher(keyword).replaceAll("");
    }

原创粉丝点击