Advertisement
lesharb

ExpertPlugin

Nov 20th, 2015
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.48 KB | None | 0 0
  1. package pro.redsoft.expert.issueNumber;
  2.  
  3. import org.elasticsearch.common.Nullable;
  4. import org.elasticsearch.script.AbstractSearchScript;
  5.  
  6. import java.util.Map;
  7.  
  8. /**
  9.  * Created by Labotsky Alexey on 11/19/15. lesharb@gmail.com
  10.  */
  11. public class IssueNumberScript extends AbstractSearchScript {
  12.  
  13.   private String issueNumber;
  14.   private Long issueDate;
  15.   private Long updateDate;
  16.  
  17.   public IssueNumberScript(@Nullable Map params) {
  18.     issueNumber = (String) params.get("sIssueNumber");
  19.     issueDate = (Long) params.get("sIssueDate");
  20.     updateDate = (Long) params.get("sUpdateDate");
  21.   }
  22.  
  23.   @Override
  24.   public Object run() {
  25.     return null;
  26.   }
  27.  
  28.   // Числовая часть по умолчанию
  29.   private final String NUM_PART = "1000000";
  30.  
  31.   // Числовая часть для номеров, у которых ее нет (hack)
  32.   private final String NUM_PART_WITHOUT_NUMBER = "999999";
  33.  
  34.   class NumberPart {
  35.     String firstPart;
  36.     String secondPart;
  37.  
  38.     public NumberPart(String firstPart, String secondPart) {
  39.       this.firstPart = firstPart;
  40.       this.secondPart = secondPart;
  41.     }
  42.  
  43.     public Integer getFirstPart() {
  44.       return Integer.parseInt(firstPart);
  45.     }
  46.  
  47.     public String getSecondPart() {
  48.       return secondPart;
  49.     }
  50.  
  51.   }
  52.  
  53.   private Integer getIntNUM_PART() {
  54.     return Integer.parseInt(NUM_PART);
  55.   }
  56.  
  57.   // private int checkDates(DocumentBean o1, DocumentBean o2) {
  58.   // int issueDate = o1.getSissueDate().compareTo(o2.getSissueDate());
  59.   // if (issueDate == 0) {
  60.   // int updateDate = o1.getSupdateDate().compareTo(o2.getSupdateDate());
  61.   // return updateDate;
  62.   // } else
  63.   // return issueDate;
  64.   // }
  65.   //
  66.   // @Override
  67.   // public int compare(DocumentBean o1, DocumentBean o2) {
  68.   //
  69.   // NumberPart numberPartDoc1;
  70.   // NumberPart numberPartDoc2;
  71.   //
  72.   // // Анализируем и подготавливаем строки для сравнения по числовой состовляющей
  73.   // numberPartDoc1 = parseNumber(o1.getIssueNumber().get(i));
  74.   // numberPartDoc2 = parseNumber(o2.getIssueNumber().get(i));
  75.   //
  76.   // if (numberPartDoc1.getFirstPart() != getIntNUM_PART() && numberPartDoc2.getFirstPart() != getIntNUM_PART()) {
  77.   // int firstPart = numberPartDoc1.getFirstPart().compareTo(numberPartDoc2.getFirstPart());
  78.   // if (firstPart == 0) {
  79.   // int secondPart = numberPartDoc1.getSecondPart().compareTo(numberPartDoc2.getSecondPart());
  80.   // if (secondPart == 0) {
  81.   // return checkDates(o1, o2);
  82.   // } else
  83.   // return secondPart;
  84.   // }
  85.   // return firstPart;
  86.   // }
  87.   // }return 0;
  88.   //
  89.   // }
  90.  
  91.   private NumberPart parseNumber(String number) {
  92.     // Проверяем на "безномерность"
  93.     if (number != null) {
  94.       String formatString = number.trim();
  95.       if (formatString.equals("") || formatString.equals("-") || formatString.equals("б/н"))
  96.         return new NumberPart(NUM_PART, "");
  97.       else {
  98.         StringBuilder sb = new StringBuilder();
  99.         for (int i = 0; i < number.length(); i++) {
  100.           if (Character.isDigit(number.charAt(i)))
  101.             sb.append(number.charAt(i));
  102.           else
  103.             break;
  104.         }
  105.         String firstPart = sb.toString();
  106.         String secondPart = number.replaceFirst(firstPart, "");
  107.  
  108.         if (firstPart.isEmpty())
  109.           firstPart = NUM_PART_WITHOUT_NUMBER;
  110.  
  111.         return new NumberPart(firstPart, secondPart);
  112.       }
  113.     } else
  114.       return new NumberPart(NUM_PART, "");
  115.   }
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement