Пример #1
0
 private String PrepareHintImagesURL(int[] HintIDs) throws IOException {
   String URL1 = Reflector.Server.Address;
   // . add command path
   URL1 =
       "http://"
           + URL1
           + "/"
           + "Space"
           + "/"
           + "2" /*URLProtocolVersion*/
           + "/"
           + Long.toString(Reflector.User.UserID);
   String URL2 =
       "TypesSystem"
           + "/"
           + Integer.toString(SpaceDefines.idTHINTVisualization)
           + "/"
           + "DataFiles.dat";
   // . add command parameters
   URL2 = URL2 + "?" + "1" /*command version*/;
   StringBuilder SB = new StringBuilder();
   for (int I = 0; I < HintIDs.length; I++)
     if (I < (HintIDs.length - 1)) SB.append(Integer.toString(HintIDs[I]) + ";");
     else SB.append(Integer.toString(HintIDs[I]));
   URL2 = URL2 + "," + SB.toString();
   // .
   byte[] URL2_Buffer;
   try {
     URL2_Buffer = URL2.getBytes("windows-1251");
   } catch (Exception E) {
     URL2_Buffer = null;
   }
   byte[] URL2_EncryptedBuffer = Reflector.User.EncryptBufferV2(URL2_Buffer);
   // . encode string
   StringBuffer sb = new StringBuffer();
   for (int I = 0; I < URL2_EncryptedBuffer.length; I++) {
     String h = Integer.toHexString(0xFF & URL2_EncryptedBuffer[I]);
     while (h.length() < 2) h = "0" + h;
     sb.append(h);
   }
   URL2 = sb.toString();
   // .
   String URL = URL1 + "/" + URL2 + ".dat";
   return URL;
 }
Пример #2
0
 @SuppressWarnings({"null", "unused"})
 public void GetHintsFromServer(TReflectionWindow ReflectionWindow, TCanceller Canceller)
     throws Exception {
   if (Reflector.flOffline) return; // . ->
   TReflectionWindowStruc RW = ReflectionWindow.GetWindow();
   TReflectorSpaceLays Lays = ReflectionWindow.getLays();
   TReflectionWindowActualityInterval ActualityInterval = ReflectionWindow.GetActualityInterval();
   // .
   String URL1 = Reflector.Server.Address;
   // . add command path
   URL1 =
       "http://"
           + URL1
           + "/"
           + "Space"
           + "/"
           + "2" /*URLProtocolVersion*/
           + "/"
           + Long.toString(Reflector.User.UserID);
   String URL2 = "SpaceWindow.png";
   // . add command parameters
   URL2 =
       URL2
           + "?"
           + "5" /*command version*/
           + ","
           + Double.toString(RW.X0)
           + ","
           + Double.toString(RW.Y0)
           + ","
           + Double.toString(RW.X1)
           + ","
           + Double.toString(RW.Y1)
           + ","
           + Double.toString(RW.X2)
           + ","
           + Double.toString(RW.Y2)
           + ","
           + Double.toString(RW.X3)
           + ","
           + Double.toString(RW.Y3)
           + ",";
   short[] InvisibleLays = Lays.GetDisabledLaysIndexes();
   short InvisibleLaysCount;
   if (InvisibleLays != null) InvisibleLaysCount = (short) InvisibleLays.length;
   else InvisibleLaysCount = 0;
   URL2 = URL2 + Integer.toString(InvisibleLaysCount) + ",";
   for (int I = 0; I < InvisibleLaysCount; I++)
     URL2 = URL2 + Integer.toString(InvisibleLays[I]) + ',';
   URL2 = URL2 + Integer.toString(Reflector.VisibleFactor) + ",";
   URL2 = URL2 + "1" /*Dynamic hint data version*/ + ",";
   // . Visualization UserData
   int TSVUserDataSize = 0;
   byte[] TSVUserData = null;
   if (TSVUserData != null) TSVUserDataSize = TSVUserData.length;
   int Idx = 0;
   byte[] UserData = new byte[4 /*SizeOf(TSVUserDataSize)*/ + TSVUserDataSize];
   byte[] BA = TDataConverter.ConvertInt32ToLEByteArray(TSVUserDataSize);
   System.arraycopy(BA, 0, UserData, Idx, BA.length);
   Idx += BA.length;
   if (TSVUserDataSize > 0) {
     System.arraycopy(TSVUserData, 0, UserData, Idx, TSVUserData.length);
     Idx += TSVUserData.length;
   }
   String UserDataString;
   ByteArrayOutputStream BOS = new ByteArrayOutputStream();
   try {
     Base64OutputStream B64S = new Base64OutputStream(BOS, Base64.URL_SAFE);
     try {
       B64S.write(UserData);
     } finally {
       B64S.close();
     }
     UserDataString = new String(BOS.toByteArray());
   } finally {
     BOS.close();
   }
   URL2 = URL2 + UserDataString + ",";
   // .
   URL2 =
       URL2
           + Double.toString(ActualityInterval.GetBeginTimestamp())
           + ","
           + Double.toString(ActualityInterval.EndTimestamp)
           + ",";
   // .
   URL2 =
       URL2
           + Integer.toString(RW.Xmn)
           + ","
           + Integer.toString(RW.Ymn)
           + ","
           + Integer.toString(RW.Xmx)
           + ","
           + Integer.toString(RW.Ymx);
   boolean flUpdateProxySpace = false;
   if (flUpdateProxySpace) URL2 = URL2 + "," + "1" /*flUpdateProxySpace = true*/;
   // .
   byte[] URL2_Buffer;
   try {
     URL2_Buffer = URL2.getBytes("windows-1251");
   } catch (Exception E) {
     URL2_Buffer = null;
   }
   byte[] URL2_EncryptedBuffer = Reflector.User.EncryptBufferV2(URL2_Buffer);
   // . encode string
   StringBuffer sb = new StringBuffer();
   for (int I = 0; I < URL2_EncryptedBuffer.length; I++) {
     String h = Integer.toHexString(0xFF & URL2_EncryptedBuffer[I]);
     while (h.length() < 2) h = "0" + h;
     sb.append(h);
   }
   URL2 = sb.toString();
   // .
   String URL = URL1 + "/" + URL2 + ".png";
   // .
   HttpURLConnection Connection = Reflector.Server.OpenConnection(URL);
   try {
     InputStream in = Connection.getInputStream();
     try {
       if (Canceller != null) Canceller.Check();
       // .
       byte[] HintDataSizeBA = new byte[4];
       TNetworkConnection.InputStream_ReadData(
           in, HintDataSizeBA, HintDataSizeBA.length, Canceller, Reflector.context);
       int HintDataSize = TDataConverter.ConvertLEByteArrayToInt32(HintDataSizeBA, 0);
       byte[] HintData = new byte[HintDataSize];
       TNetworkConnection.InputStream_ReadData(
           in, HintData, HintDataSize, Canceller, Reflector.context);
       HintData = UnPackByteArray(HintData);
       ReviseItemsInReflectionWindow(RW, HintData, Canceller);
       FromByteArray(HintData, Canceller);
     } finally {
       in.close();
     }
   } finally {
     Connection.disconnect();
   }
 }