| 255 | b) Write the archive file(s) |
| 256 | {{{ |
| 257 | protected void populateScanFeatureData(String glycanFilesPath, Data data) { |
| 258 | AnnotationWriter writer = new AnnotationWriter(); |
| 259 | writer.generateScansAnnotationFiles(glycanFilesPath, data) |
| 260 | } |
| 261 | }}} |
| 262 | |
| 263 | 1) create ZipOutputStream |
| 264 | {{{ |
| 265 | FileOutputStream ms_final = new FileOutputStream(zipPath); |
| 266 | ZipOutputStream compressedFile = new ZipOutputStream(ms_final); |
| 267 | }}} |
| 268 | 2) Write DataHeader to compressed file |
| 269 | {{{ |
| 270 | public void writeDataHeaderToZip( DataHeader dHeader, ZipOutputStream compressedFile ) { |
| 271 | JAXBContext jaxbDataHeaderContext = null; |
| 272 | Marshaller jaxbDataHeaderMarshaller = null; |
| 273 | try { |
| 274 | List<Class> contextList = new ArrayList<>(Arrays.asList(FilterUtils.filterClassContext)); |
| 275 | contextList.add(FilterSetting.class); |
| 276 | contextList.add(DataHeader.class); |
| 277 | jaxbDataHeaderContext = JAXBContext.newInstance(contextList.toArray(new Class[contextList.size()])); |
| 278 | jaxbDataHeaderMarshaller = jaxbDataHeaderContext.createMarshaller(); |
| 279 | } catch (JAXBException e1) { |
| 280 | logger.error(e1.getMessage(), e1); |
| 281 | return; |
| 282 | } catch ( Exception e2 ) { |
| 283 | logger.error(e2.getMessage(), e2); |
| 284 | return; |
| 285 | } |
| 286 | try { |
| 287 | jaxbDataHeaderMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); |
| 288 | compressedFile.putNextEntry(new ZipEntry(AnnotationWriter.DATA_HEADER)); |
| 289 | jaxbDataHeaderMarshaller.marshal(dHeader, compressedFile); |
| 290 | } catch (IOException e1) { |
| 291 | logger.error(e1.getMessage(), e1); |
| 292 | } catch (JAXBException e2) { |
| 293 | logger.error(e2.getMessage(), e2); |
| 294 | } catch ( Exception ex ) { |
| 295 | logger.error(ex.getMessage(), ex); |
| 296 | } |
| 297 | try { |
| 298 | compressedFile.closeEntry(); |
| 299 | } catch (IOException e1) { |
| 300 | logger.error(e1.getMessage(), e1); |
| 301 | } catch ( Exception ex ) { |
| 302 | logger.error(ex.getMessage(), ex); |
| 303 | } |
| 304 | } |
| 305 | }}} |
| 306 | |
| 307 | 3) Write Method object to compressed file |
| 308 | {{{ |
| 309 | public void writeMethodToZip( Method method, ZipOutputStream compressedFile ) { |
| 310 | JAXBContext jaxbMethodContext = null; |
| 311 | Marshaller jaxbMethodMarshaller = null; |
| 312 | try { |
| 313 | List<Class> contextList = new ArrayList<>(Arrays.asList(FilterUtils.filterClassContext)); |
| 314 | contextList.add(FilterSetting.class); |
| 315 | contextList.add(Method.class); |
| 316 | jaxbMethodContext = JAXBContext.newInstance(contextList.toArray(new Class[contextList.size()])); |
| 317 | jaxbMethodMarshaller = jaxbMethodContext.createMarshaller(); |
| 318 | } catch (JAXBException e1) { |
| 319 | logger.error(e1.getMessage(), e1); |
| 320 | return; |
| 321 | } catch ( Exception e2 ) { |
| 322 | logger.error(e2.getMessage(), e2); |
| 323 | return; |
| 324 | } |
| 325 | try { |
| 326 | jaxbMethodMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); |
| 327 | compressedFile.putNextEntry(new ZipEntry(AnnotationWriter.SETTINGS_FILE)); |
| 328 | jaxbMethodMarshaller.marshal(method, compressedFile); |
| 329 | } catch (IOException e1) { |
| 330 | logger.error(e1.getMessage(), e1); |
| 331 | } catch (JAXBException e2) { |
| 332 | logger.error(e2.getMessage(), e2); |
| 333 | } catch ( Exception ex ) { |
| 334 | logger.error(ex.getMessage(), ex); |
| 335 | } |
| 336 | try { |
| 337 | compressedFile.closeEntry(); |
| 338 | } catch (IOException e1) { |
| 339 | logger.error(e1.getMessage(), e1); |
| 340 | } catch ( Exception ex ) { |
| 341 | logger.error(ex.getMessage(), ex); |
| 342 | } |
| 343 | } |
| 344 | }}} |
| 345 | |
| 346 | 4) Write Data object WITHOUT ScanFeatures objects to compressed file |
| 347 | {{{ |
| 348 | public void writeDataToZip(Data data, ZipOutputStream compressedFile ) { |
| 349 | JAXBContext jaxbDataContext = null; |
| 350 | Marshaller jaxbDataMarshaller = null; |
| 351 | try { |
| 352 | List<Class> contextList = new ArrayList<>(Arrays.asList(FilterUtils.filterClassContext)); |
| 353 | contextList.add(FilterSetting.class); |
| 354 | contextList.add(Data.class); |
| 355 | jaxbDataContext = JAXBContext.newInstance(contextList.toArray(new Class[contextList.size()])); |
| 356 | jaxbDataMarshaller = jaxbDataContext.createMarshaller(); |
| 357 | } catch (JAXBException e1) { |
| 358 | logger.error(e1.getMessage(), e1); |
| 359 | return; |
| 360 | } catch ( Exception e2 ) { |
| 361 | logger.error(e2.getMessage(), e2); |
| 362 | return; |
| 363 | } |
| 364 | try { |
| 365 | jaxbDataMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); |
| 366 | compressedFile.putNextEntry(new ZipEntry(AnnotationWriter.DATA_FILE)); |
| 367 | // testing not serializing the scanfeatures in the data object. |
| 368 | HashMap<Integer, ScanFeatures> hm = data.getScanFeatures(); |
| 369 | data.setScanFeatures(null); // set scan features to null before writing data! |
| 370 | jaxbDataMarshaller.marshal(data, compressedFile); |
| 371 | data.setScanFeatures(hm); |
| 372 | } catch (IOException e1) { |
| 373 | logger.error(e1.getMessage(), e1); |
| 374 | } catch (JAXBException e2) { |
| 375 | logger.error(e2.getMessage(), e2); |
| 376 | } catch ( Exception ex ) { |
| 377 | logger.error(ex.getMessage(), ex); |
| 378 | } |
| 379 | try { |
| 380 | compressedFile.closeEntry(); |
| 381 | } catch (IOException e1) { |
| 382 | logger.error(e1.getMessage(), e1); |
| 383 | } catch ( Exception ex ) { |
| 384 | logger.error(ex.getMessage(), ex); |
| 385 | } |
| 386 | } |
| 387 | }}} |
| 388 | |
| 389 | 5) Write ScanFeatures objects to compressed file |
| 390 | {{{ |
| 391 | public void writeScanFeaturesToZip(Data data, ZipOutputStream compressedFile, String glycanFilesPath ) throws Exception { |
| 392 | JAXBContext jaxbContextAnn = null; |
| 393 | Marshaller jaxbMarshallerAnn = null; |
| 394 | try { |
| 395 | jaxbContextAnn = JAXBContext.newInstance(ScanFeatures.class); |
| 396 | jaxbMarshallerAnn = jaxbContextAnn.createMarshaller(); |
| 397 | } catch (JAXBException e1) { |
| 398 | logger.error(e1.getMessage(), e1); |
| 399 | return; |
| 400 | } catch ( Exception e2 ) { |
| 401 | logger.error(e2.getMessage(), e2); |
| 402 | return; |
| 403 | } |
| 404 | HashMap<String,String> gogCheckerForMS1 = new HashMap<String,String>(); |
| 405 | try { |
| 406 | if( data.getScans() != null ) { |
| 407 | for(Integer scanId : data.getScans().keySet()){ |
| 408 | try { |
| 409 | compressedFile.putNextEntry(new ZipEntry(scanId+".xml")); |
| 410 | jaxbMarshallerAnn.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); |
| 411 | jaxbMarshallerAnn.marshal(data.getScanFeatures().get(scanId),compressedFile); |
| 412 | } catch (IOException e1) { |
| 413 | logger.error(e1.getMessage(), e1); |
| 414 | } catch (JAXBException e2) { |
| 415 | logger.error(e2.getMessage(), e2); |
| 416 | } catch ( Exception ex ) { |
| 417 | logger.error(ex.getMessage(), ex); |
| 418 | } |
| 419 | try { |
| 420 | compressedFile.closeEntry(); |
| 421 | if(data.getAnnotatedScan().get(scanId) != null){ |
| 422 | for(String gog : data.getAnnotatedScan().get(scanId)){ |
| 423 | gogCheckerForMS1.put(gog, "seen"); |
| 424 | } |
| 425 | } |
| 426 | } catch (IOException e1) { |
| 427 | logger.error(e1.getMessage(), e1); |
| 428 | } catch ( Exception ex ) { |
| 429 | logger.error(ex.getMessage(), ex); |
| 430 | } |
| 431 | } |
| 432 | } |
| 433 | } catch ( Exception ex ) { |
| 434 | logger.error(ex.getMessage(), ex); |
| 435 | return; |
| 436 | } |
| 437 | |
| 438 | try { |
| 439 | deleteAnnotationsPerGlycan(glycanFilesPath,gogCheckerForMS1); // clean up temporary folder of data |
| 440 | } catch ( Exception ex ) { |
| 441 | logger.error(ex.getMessage(), ex); |
| 442 | } |
| 443 | } |
| 444 | }}} |
| 445 | |
| 446 | 6) Close compressed file |
| 447 | {{{ |
| 448 | try { |
| 449 | compressedFile.close(); |
| 450 | }catch(Exception ex){ |
| 451 | logger.error("Error closing compressed file", ex); |
| 452 | } |
| 453 | }}} |