Package org.xtext.mongobeans.examples

Source Code of org.xtext.mongobeans.examples.MusicDBXtendTest

/**
* Copyright (c) 2012 itemis AG (http://www.itemis.eu) and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.xtext.mongobeans.examples;

import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.Mongo;
import java.util.List;
import org.eclipse.xtext.xbase.lib.Exceptions;
import org.eclipse.xtext.xbase.lib.Extension;
import org.eclipse.xtext.xbase.lib.Functions.Function0;
import org.eclipse.xtext.xbase.lib.IterableExtensions;
import org.eclipse.xtext.xbase.lib.ObjectExtensions;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
import org.junit.Assert;
import org.junit.Test;
import org.musicdb.Album;
import org.musicdb.Artist;
import org.musicdb.Track;
import org.xtext.mongobeans.examples.Duration;
import org.xtext.mongobeans.lib.MongoExtensions;

@SuppressWarnings("all")
public class MusicDBXtendTest {
  @Extension
  private MongoExtensions _mongoExtensions = new Function0<MongoExtensions>() {
    public MongoExtensions apply() {
      MongoExtensions _mongoExtensions = new MongoExtensions();
      return _mongoExtensions;
    }
  }.apply();
 
  @Test
  public void testMongoFacade() {
    try {
      Mongo _mongo = new Mongo();
      final Mongo mongo = _mongo;
      try {
        final DB db = mongo.getDB("testdb");
        final DBCollection dbCollection = db.getCollection("testCollection");
        Artist _artist = new Artist();
        final Procedure1<Artist> _function = new Procedure1<Artist>() {
          public void apply(final Artist it) {
            it.setName("John Coltrane");
            final Procedure1<Album> _function = new Procedure1<Album>() {
              public void apply(final Album it) {
                it.setTitle("A Love Supreme");
                it.setYear(1965);
                MusicDBXtendTest.this.addTrack(it, "Part 1: Acknowledgement", "7:43");
                MusicDBXtendTest.this.addTrack(it, "Part 2: Resolution", "7:20");
                MusicDBXtendTest.this.addTrack(it, "Part 3: Pursuance", "10:42");
                MusicDBXtendTest.this.addTrack(it, "Part 4: Psalm", "7:05");
              }
            };
            MusicDBXtendTest.this.addAlbum(it, _function);
            final Procedure1<Album> _function_1 = new Procedure1<Album>() {
              public void apply(final Album it) {
                it.setTitle("Impressions");
                it.setYear(1961);
                MusicDBXtendTest.this.addTrack(it, "India", "13:52");
                MusicDBXtendTest.this.addTrack(it, "Up \'gainst the Wall", "3:12");
                MusicDBXtendTest.this.addTrack(it, "Impressions", "14:40");
                MusicDBXtendTest.this.addTrack(it, "After the Rain", "4:07");
              }
            };
            MusicDBXtendTest.this.addAlbum(it, _function_1);
          }
        };
        final Artist john = ObjectExtensions.<Artist>operator_doubleArrow(_artist, _function);
        Iterable<? extends Track> _oevre = john.getOevre();
        int _size = IterableExtensions.size(_oevre);
        Assert.assertEquals(8, _size);
        this._mongoExtensions.save(dbCollection, john);
        Artist _artist_1 = new Artist();
        final Procedure1<Artist> _function_1 = new Procedure1<Artist>() {
          public void apply(final Artist it) {
            it.setName("John Coltrane");
          }
        };
        Artist _doubleArrow = ObjectExtensions.<Artist>operator_doubleArrow(_artist_1, _function_1);
        final Artist johnFromDb = this._mongoExtensions.<Artist>findOneBean(dbCollection, _doubleArrow);
        Assert.assertNotNull(johnFromDb);
        List<Album> _albums = johnFromDb.getAlbums();
        int _size_1 = _albums.size();
        Assert.assertEquals(2, _size_1);
        List<Album> _albums_1 = johnFromDb.getAlbums();
        final Album albumFromDb = _albums_1.get(1);
        Duration _duration = albumFromDb.getDuration();
        String _string = _duration.toString();
        Assert.assertEquals("35:51", _string);
      } finally {
        mongo.close();
      }
    } catch (Throwable _e) {
      throw Exceptions.sneakyThrow(_e);
    }
  }
 
  protected boolean addAlbum(final Artist it, final Procedure1<? super Album> initializer) {
    List<Album> _albums = it.getAlbums();
    Album _album = new Album();
    Album _doubleArrow = ObjectExtensions.<Album>operator_doubleArrow(_album, initializer);
    boolean _add = _albums.add(_doubleArrow);
    return _add;
  }
 
  protected boolean addTrack(final Album it, final String trackTitle, final String trackDuration) {
    List<Track> _tracks = it.getTracks();
    Track _track = new Track();
    final Procedure1<Track> _function = new Procedure1<Track>() {
      public void apply(final Track it) {
        it.setTitle(trackTitle);
        Duration _duration = new Duration(trackDuration);
        int _seconds = _duration.getSeconds();
        it.setSeconds(_seconds);
      }
    };
    Track _doubleArrow = ObjectExtensions.<Track>operator_doubleArrow(_track, _function);
    boolean _add = _tracks.add(_doubleArrow);
    return _add;
  }
}
TOP

Related Classes of org.xtext.mongobeans.examples.MusicDBXtendTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.