public static Album categoriesToAlbum(List<Category> categories){ // in jiwigo, the root album can not contain pictures (not an album); it // is not listed among the available albums Album resultAlbum = new Album(); resultAlbum.setName(0); resultAlbum.setId(0); Album album; for (Category category : categories) { album = jiwigoCategoryToAlbum(category); if(category.getParentCategories().size()==0){ //no parents, so it is at the root resultAlbum.getSubAlbums().add(album); } else{ Album parentAlbum = AlbumUtils.findAlbumFromAlbumName(resultAlbum, category.getParentCategories().get(0).getIdentifier()); parentAlbum.getSubAlbums().add(album); } } return resultAlbum; }
album.setParent(parent); if (parent != null) { parent.getSubAlbums().add(album);
/** * This method returns the Album corresponding to albumName, among the rootAlbum hierarchy * @param rootAlbum * @param albumName * @return */ public static Album findAlbumFromAlbumName(Album rootAlbum, int albumName) { logger.debug("rootAlbum is : {} -- albumName is : {}",rootAlbum,albumName); Album albumFound=null; if (rootAlbum.getName() == albumName&& !rootAlbum.isFakeAlbum()) { albumFound= rootAlbum; } for (Album album : rootAlbum.getSubAlbums()) { if (album.getName() == albumName && !album.isFakeAlbum()) { albumFound= album; break; } Album fromAlbumName = findAlbumFromAlbumName(album, albumName); if (fromAlbumName != null && !fromAlbumName.isFakeAlbum()) { albumFound= fromAlbumName; } } logger.debug("albumFound is : {}",albumFound); return albumFound; } }
Assert.assertEquals(1, resultAlbum.getSubAlbums().get(0).getName()); Assert.assertEquals(2, resultAlbum.getSubAlbums().get(0).getSubAlbums().get(0).getName()); Assert.assertEquals(20, resultAlbum.getSubAlbums().get(0).getSubAlbums().get(1).getName()); Assert.assertEquals(3, resultAlbum.getSubAlbums().get(0).getSubAlbums().get(0).getSubAlbums().get(0).getName());
Album album1 = new Album(); album1.setName(1); rootAlbum.getSubAlbums().add(album1); Album album2 = new Album(); album2.setName(2); rootAlbum.getSubAlbums().add(album2); Album album3 = new Album(); album3.setName(3); rootAlbum.getSubAlbums().add(album3); Album album4 = new Album(); album4.setName(4); rootAlbum.getSubAlbums().add(album4); Album album31 = new Album(); album31.setName(31); album3.getSubAlbums().add(album31); Album album311 = new Album(); album311.setName(311); album311.setId(12); album31.getSubAlbums().add(album311); album311_fake.setName(311); album311_fake.setFakeAlbum(true); album311.getSubAlbums().add(album311_fake);
@Test public void serializeAlbumAndUnSerializeAnAlbum() throws SerializationException { Album myAlbum = new Album(1, 43, "myAlbum", "Inthis album, there's not much", 0, false, false, false, false, "no extrafield"); myAlbum.getSubAlbums().add( new Album(2, 4343, "a sub album", "nothing more here !", 43, true, true, true, true, "Some fields!")); byte[] serialize = Serialization.serializeAlbum(myAlbum); Album unserializedAlbum = Serialization.unserializeAlbum(serialize); Assert.assertEquals(myAlbum, unserializedAlbum); } }
Collections.sort(finalAlbum.getSubAlbums(), new Comparator<Album>() { public int compare(final Album albumA, final Album albumB) { return Integer.valueOf(albumA.getName()).compareTo(Integer.valueOf(albumB.getName())); assertEquals(3, finalAlbum.getSubAlbums().get(0).getName()); assertEquals(4, finalAlbum.getSubAlbums().get(1).getName()); assertEquals(20, finalAlbum.getSubAlbums().get(2).getName()); assertEquals(5, finalAlbum.getSubAlbums().get(2).getSubAlbums().get(0).getName()); assertEquals(6, finalAlbum.getSubAlbums().get(2).getSubAlbums().get(1).getName());