package de.thedevstack.conversationsplus.persistance.db.migrations; import java.net.MalformedURLException; import java.net.URL; import de.thedevstack.conversationsplus.entities.FileParams; import de.thedevstack.conversationsplus.utils.UrlUtil; /** * Created by steckbrief on 24.08.2016. */ public class FileParamsBodyToDatabaseFieldsMigration { public static FileParams getFileParams(String body) { FileParams params = getLegacyFileParams(body); if (params != null) { return params; } params = new FileParams(); if (body == null) { return params; } String parts[] = body.split("\\|"); switch (parts.length) { case 1: try { params.setSize(Long.parseLong(parts[0])); } catch (NumberFormatException e) { try { URL url = new URL(parts[0]); params.setUrl(url.toString()); byte[] ivAndKey = UrlUtil.getIvAndKeyFromURL(url); params.setKeyAndIv(ivAndKey); } catch (MalformedURLException e1) { } } break; case 2: case 4: try { URL url = new URL(parts[0]); params.setUrl(url.toString()); byte[] ivAndKey = UrlUtil.getIvAndKeyFromURL(url); params.setKeyAndIv(ivAndKey); } catch (MalformedURLException e1) { } try { params.setSize(Long.parseLong(parts[1])); } catch (NumberFormatException e) { } try { params.setWidth(Integer.parseInt(parts[2])); } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) { } try { params.setHeight(Integer.parseInt(parts[3])); } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) { } break; case 3: try { params.setSize(Long.parseLong(parts[0])); } catch (NumberFormatException e) { } try { params.setWidth(Integer.parseInt(parts[1])); } catch (NumberFormatException e) { } try { params.setHeight(Integer.parseInt(parts[2])); } catch (NumberFormatException e) { } break; } return params; } private static FileParams getLegacyFileParams(String body) { FileParams params = new FileParams(); if (body == null) { return params; } String parts[] = body.split(","); if (parts.length == 3) { try { params.setSize(Long.parseLong(parts[0])); } catch (NumberFormatException e) { return null; } try { params.setWidth(Integer.parseInt(parts[1])); } catch (NumberFormatException e) { return null; } try { params.setHeight(Integer.parseInt(parts[2])); } catch (NumberFormatException e) { return null; } return params; } else { return null; } } }