text:
require 'spec_helper'

describe OptionNode do
  include OptionNodeSupport

  describe 'destroy' do
    before do
      @node = create(:option_node_with_grandchildren)
      @option = @node.children[0].option
      @node.children[0].destroy
    end

    it 'should not destroy option' do
      expect(Option.exists?(@option)).to be_truthy
    end
  end

  describe 'option_level' do
    before do
      @node = create(:option_node_with_grandchildren)
      allow_message_expectations_on_nil # Since we want to set expectations on subnode.option_set, which is nil.
    end

    it 'should be nil for root' do
      expect(@node.level).to be_nil
    end

    it 'should be correct for first level' do
      subnode = @node.c[0]
      expect(subnode.option_set).to receive(:try).with(:level, 1).and_return(double(:name => 'Foo'))
      expect(subnode.level.name).to eq 'Foo'
    end

    it 'should be correct for second level' do
      subnode = @node.c[0].c[0]
      expect(subnode.option_set).to receive(:try).with(:level, 2).and_return(double(:name => 'Bar'))
      expect(subnode.level.name).to eq 'Bar'
    end

    it 'might be nil for first level' do
      subnode = @node.c[0]
      expect(subnode.option_set).to receive(:try).with(:level, 1).and_return(nil)
      expect(subnode.level).to be_nil
    end
  end

  describe 'creating single level from hash' do
    before do
      # we use a mixture of existing and new options
      @dog = create(:option, name_en: 'Dog')
      @node = OptionNode.create!(
        'mission_id' => get_mission.id,
        'option' => nil,
        'children_attribs' => [
          { 'option_attribs' => { 'name_translations' => {'en' => 'Cat'} } },
          { 'option_attribs' => { 'id' => @dog.id, 'name_translations' => {'en' => 'Dog'} } }
        ]
      )
    end

    it 'should be correct' do
      expect_node(['Cat', 'Dog'])
    end
  end

  describe 'creating multilevel from hash' do
    before do
      # we use a mixture of existing and new options
      @dog = create(:option, name_en: 'Dog')
      @oak = create(:option, name_en: 'Oak')
      @node = OptionNode.create!(
        'option' => nil,
        'mission_id' => get_mission.id,
        'children_attribs' => [{
          'option_attribs' => { 'name_translations' => {'en' => 'Animal'} },
          'children_attribs' => [
            { 'option_attribs' => { 'name_translations' => {'en' => 'Cat'} } },
            { 'option_attribs' => { 'id' => @dog.id } } # Existing option
          ]
        }, {
          'option_attribs' => { 'name_translations' => {'en' => 'Plant'} },
          'children_attribs' => [
            { 'option_attribs' => { 'name_translations' => {'en' => 'Tulip'} } },
            { 'option_attribs' => { 'id' => @oak.id, 'name_translations' => {'en' => 'White Oak'} } } # also change a name for this option
          ]
        }]
      )
    end

    it 'should be correct' do
      expect_node([['Animal', ['Cat', 'Dog']], ['Plant', ['Tulip', 'White Oak']]])
    end
  end

  describe 'updating from hash with no changes' do
    before do
      @node = create(:option_node_with_grandchildren)
      @node.update_attributes!(no_change_changeset(@node))
    end

    it 'should still be correct' do
      expect_node([['Animal', ['Cat', 'Dog']], ['Plant', ['Tulip', 'Oak']]])
    end

    it 'should not cause ranks to change' do
      expect(@node.ranks_changed?).to eq false
    end

    it 'should cause options_added? to be false' do
      expect(@node.options_added?).to eq false
    end

    it 'should cause options_removed? to be false' do
      expect(@node.options_removed?).to eq false
    end
  end

  describe 'updating from hash with full set of changes' do
    before do
      @node = create(:option_node_with_grandchildren)
      @node.update_attributes!(standard_changeset(@node))
    end

    it 'should be correct' do
      expect_node([['Animal', ['Doge']], ['Plant', ['Cat', 'Tulipe']]])
    end

    it 'should cause ranks_changed? to become true' do
      expect(@node.ranks_changed?).to eq true
    end

    it 'should cause options_added? to be true' do
      expect(@node.options_added?).to eq true
    end

    it 'should cause options_removed? to be true' do
      expect(@node.options_removed?).to eq true
    end
  end

  describe 'updating from hash, moving two options to a different node' do
    before do
      @node = create(:option_node_with_grandchildren)
      @node.update_attributes!(move_node_changeset(@node))
    end

    it 'should be correct' do
      expect_node(['Animal', ['Plant', ['Tulip', 'Oak', 'Cat', 'Dog']]])
    end

    it 'should cause ranks_changed? to be false' do
      expect(@node.ranks_changed?).to eq false
    end

    it 'should cause options_added? to be true' do
      # Because moving an option is really adding and removing.
      expect(@node.options_added?).to eq true
    end

    it 'should cause options_removed? to be true' do
      # Because moving an option is really adding and removing.
      expect(@node.options_removed?).to eq true
    end
  end

  describe 'adding an option via hash' do
    before do
      @node = create(:option_node_with_grandchildren)
      @node.update_attributes!(additive_changeset(@node))
    end

    it 'should be correct' do
      expect_node([['Animal', ['Cat', 'Dog', 'Ocelot']], ['Plant', ['Tulip', 'Oak']]])
    end

    it 'should cause ranks_changed? to be false' do
      expect(@node.ranks_changed?).to eq false
    end

    it 'should cause options_added? to be true' do
      expect(@node.options_added?).to eq true
    end

    it 'should cause options_removed? to be false' do
      expect(@node.options_removed?).to eq false
    end
  end

  describe 'destroying subtree and adding new subtree' do
    before do
      @node = create(:option_node_with_grandchildren)
      @node.update_attributes!('children_attribs' => [
        no_change_changeset(@node)['children_attribs'][0],
        {
          'option_attribs' => { 'name_translations' => {'en' => 'Laser'} },
          'children_attribs' => [
            {
              'option_attribs' => { 'name_translations' => {'en' => 'Green'} }
            },
            {
              'option_attribs' => { 'name_translations' => {'en' => 'Red'} }
            }
          ]
        }]
      )
    end

    it 'should be correct' do
      expect_node([['Animal', ['Cat', 'Dog']], ['Laser', ['Green', 'Red']]])
    end

    it 'should not cause ranks_changed? to become true' do
      expect(@node.ranks_changed?).to eq false
    end
  end

  describe 'destroying all' do
    before do
      @node = create(:option_node_with_grandchildren)

      @node.update_attributes!('children_attribs' => [])
    end

    it 'should be correct' do
      expect_node([])
    end
  end

  describe 'has_grandchildren?' do
    it 'should return false for single level node' do
      expect(create(:option_node_with_children).has_grandchildren?).to eq false
    end

    it 'should return true for multi level node' do
      expect(create(:option_node_with_grandchildren).has_grandchildren?).to eq true
    end
  end

  describe 'child_options' do
    it 'should return child options in sorted order' do
      node = create(:option_node_with_grandchildren)
      expect(node.child_options.map(&:name)).to eq %w(Animal Plant)
    end
  end

  describe 'options_for_node' do
    it 'should return correct options for various nodes' do
      node = create(:option_node_with_great_grandchildren)
      expect(node.options_for_node([]).map(&:name)).to eq %w(Animal Plant)
      expect(node.options_for_node([node.c[1].option_id]).map(&:name)).to eq %w(Tree Flower)
    end
  end

  describe 'option_path_to_rank_path' do
    before do
      @node = create(:option_node_with_grandchildren)
    end

    it 'should be correct for partial path' do
      expect(@node.option_path_to_rank_path([@node.c[0].option])).to eq [1]
    end

    it 'should be correct for full path' do
      expect(@node.option_path_to_rank_path([@node.c[1].option, @node.c[1].c[0].option])).to eq [2,1]
    end

    it 'should raise error for invalid path' do
      expect{@node.option_path_to_rank_path([create(:option)])}.to raise_error(ArgumentError)
    end
  end

  describe 'rank_path_to_option_path' do
    before do
      @node = create(:option_node_with_grandchildren)
    end

    it 'should be correct for partial path' do
      expect(@node.rank_path_to_option_path([2])).to eq [@node.c[1].option]
    end

    it 'should be correct for full path' do
      expect(@node.rank_path_to_option_path([2,1])).to eq [@node.c[1].option, @node.c[1].c[0].option]
    end

    it 'should raise error for invalid path' do
      expect{@node.rank_path_to_option_path([1,4])}.to raise_error(ArgumentError)
    end
  end
end


text:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:layout_gravity="center"
              android:orientation="vertical"
              android:padding="10dp">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="@string/animated_selector_description"
        android:textAppearance="@android:style/TextAppearance.Large"/>

    <Button
        android:id="@+id/button_xml"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="@drawable/selector"
        android:text="@string/xml_selector"/>

    <Button
        android:id="@+id/button_java"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="@string/java_selector"/>
</LinearLayout>

redpajama_set_name: RedPajamaGithub


text:
<?xml version="1.0" encoding="UTF-8"?>

<rootTag>
  <Award>
    <AwardTitle>COMPRES: Community Facilities and Infrastructure Development for High-Pressure Mineral Physics and Geosciences</AwardTitle>
    <AwardEffectiveDate>06/01/2010</AwardEffectiveDate>
    <AwardExpirationDate>08/31/2013</AwardExpirationDate>
    <AwardAmount>4850001</AwardAmount>
    <AwardInstrument>
      <Value>Cooperative Agreement</Value>
    </AwardInstrument>
    <Organization>
      06030202
      <Directorate>
        <LongName>Directorate For Geosciences</LongName>
      </Directorate>
      <Division>
        <LongName>Division Of Earth Sciences</LongName>
      </Division>
    </Organization>
    <ProgramOfficer>
      <SignBlockName>David Lambert</SignBlockName>
    </ProgramOfficer>
    <AbstractNarration>COMPRES is a community-based consortium that supports research in the materials properties of Earth and planetary interiors with particular emphasis on high-pressure science and technology and related fields. It is charged with the oversight and guidance of important high-pressure laboratories at several national facilities, such as synchrotrons and neutron sources. These have become vital tools in Earth science research. It facilitates the operation of beam lines, the development of new technologies for high-pressure research, and advocates for science and educational programs to the various funding agencies.</AbstractNarration>
    <MinAmdLetterDate>06/02/2010</MinAmdLetterDate>
    <MaxAmdLetterDate>03/04/2013</MaxAmdLetterDate>
    <ARRAAmount/>
    <AwardID>1043050</AwardID>
    <Investigator>
      <FirstName>Jay</FirstName>
      <LastName>Bass</LastName>
      <EmailAddress>jaybass@uiuc.edu</EmailAddress>
      <StartDate>06/02/2010</StartDate>
      <EndDate/>
      <RoleCode>Principal Investigator</RoleCode>
    </Investigator>
    <Institution>
      <Name>University of Illinois at Urbana-Champaign</Name>
      <CityName>CHAMPAIGN</CityName>
      <ZipCode>618207473</ZipCode>
      <PhoneNumber>2173332187</PhoneNumber>
      <StreetAddress>SUITE A</StreetAddress>
      <CountryName>United States</CountryName>
      <StateName>Illinois</StateName>
      <StateCode>IL</StateCode>
    </Institution>
    <ProgramElement>
      1580
      <Text>INSTRUMENTATION & FACILITIES</Text>
    </ProgramElement>
    <ProgramReference>
      0000
      <Text>UNASSIGNED</Text>
    </ProgramReference>
    <ProgramReference>
      OTHR
      <Text>OTHER RESEARCH OR EDUCATION</Text>
    </ProgramReference>
  </Award>
</rootTag>


text:
<?php defined('SYSPATH') OR die('No direct script access.');

/**
 * @package Jam
 * @group   jam
 * @group   jam.behavior
 * @group   jam.behavior.cascade
 */
class Jam_Behavior_CascadeTest extends Testcase_Database {

	public function data_get_current_children()
	{
		$children = array('test_blog' => array('test_posts' => array('test_tags', 'test_author', 'test_images')));

		return array(
			array('test_blog', $children, $children['test_blog']),
			array('test_post', $children, array('test_tags', 'test_author', 'test_images')),
			array('test_tags', $children, NULL),
			array('test_images', $children, NULL),
		);
	}

	/**
	 * @dataProvider data_get_current_children
	 */
	public function test_get_current_children($current, $children, $expected)
	{

		$this->assertEquals($expected, Jam_Behavior_Cascade::get_current_children($current, $children));
	}

	public function test_collect_children()
	{
		$model = Jam::find('test_blog', 1);

		$collected = Jam_Behavior_Cascade::collect_models($model, array('test_posts'));

		$this->assertEquals((string) $model, (string) $collected[0]);

		foreach ($model->test_posts as $i => $post)
		{
			$this->assertEquals((string) $post, (string) $collected[$i+1]);
		}

		$collected = Jam_Behavior_Cascade::collect_models($model, array('test_posts' => array('test_author', 'test_tags', 'test_images')));

		$expected = array(
			$model,
			$model->test_posts[0],
			$model->test_posts[0]->test_author,
			$model->test_posts[0]->test_tags[0],
			$model->test_posts[0]->test_tags[1],
			$model->test_posts[0]->test_tags[2],
			$model->test_posts[0]->test_tags[3],
			$model->test_posts[0]->test_tags[4],
			$model->test_posts[0]->test_images[0],
		);

		foreach ($expected as $i => $item)
		{
			$this->assertEquals((string) $item, (string) $collected[$i], 'Collection item '.$i.' must be "'.$item.'"');
		}
	}

} // End Jam_Builder_SelectTest


text:
package com.clearlyspam23.GLE.basic.properties;

import java.awt.Component;

import javax.swing.JSlider;

import com.clearlyspam23.GLE.PropertyTemplate;
import com.clearlyspam23.GLE.GUI.util.IntegerComponent;

public class IntPropertyTemplate extends PropertyTemplate<Component, Number> {

	private int def;
	private int min;
	private int max;
	private boolean useSlider;

	public IntPropertyTemplate(){}

	public IntPropertyTemplate(IntPropertyDefinition def){
		super(def);
	}

	public IntPropertyTemplate(IntPropertyDefinition def, int defa, int min, int max, boolean useSlider){
		super(def);
		this.setDefault(defa);
		this.setMin(min);
		this.setMax(max);
		this.setUseSlider(useSlider);
	}

	@Override
	public Component getEditorComponent() {
		if(useSlider){
			JSlider slider = new JSlider(min, max);
			slider.setPaintTicks(true);
			slider.setPaintLabels(true);
			int major = (max-min)/5;
			slider.setMajorTickSpacing(Math.max(major, 1));
			int minor = (max-min)/50;
			slider.setMinorTickSpacing(Math.max(minor, 1));
			return slider;
		}
		return new IntegerComponent();
	}

	@Override
	public void setToValue(Component component, Number value) {
		if(component instanceof JSlider)
			((JSlider)component).setValue(value.intValue());
		else
			((IntegerComponent)component).setValue(value.intValue());
	}

	@Override
	public Number getValueFrom(Component component) {
		if(component instanceof JSlider){
			return ((JSlider)component).getValue();
		}
		return ((IntegerComponent)component).getValue();
	}

	public int getDefault() {
		return def;
	}

	public void setDefault(int def) {
		this.def = def;
	}

	public int getMin() {
		return min;
	}

	public void setMin(int min) {
		this.min = min;
	}

	public int getMax() {
		return max;
	}

	public void setMax(int max) {
		this.max = max;
	}

	@Override
	public Number getDefaultValue() {
		return def;
	}

	public boolean isUseSlider() {
		return useSlider;
	}

	public void setUseSlider(boolean useSlider) {
		this.useSlider = useSlider;
	}

}


text:
<?xml version="1.0" encoding="UTF-8"?>
<questionnaire version="0.7" xml:lang="en" yes="sí">
   <levels>
      <level id="basic">Un comienzo fantástico en los pasos básicos para la publicación de datos abiertos. Se requiere mucho para llegar aquí.</level>
      <level id="pilot">Existe un esfuerzo extra para apoyar y promover la retroalimentación de las personas que usan estos datos abiertos.</level>
      <level id="standard">Datos abiertos publicados regularmente, con un soporte robusto en el que las personas se pueden confiar para construir proyectos ambiciosos.</level>
      <level id="exemplar">Esto está por encima y más allá de lo que se esperaba - un buen ejemplo de la infraestructura de información al que los demás deben aspirar-.</level>
   </levels>
   <group id="general">
      Información General
      <question id="dataTitle">
         Coloque el título de la base de datos
         <input placeholder="Título de base de datos" required="required"/>
         <help>Las personas ven el nombre de la base de datos abiertos en una lista con otros similares, por lo que debe ser lo menos ambiguo y más descriptivo posible. De manera que ellos identifiquen rápidamente lo que la hace única.</help>
      </question>
      <question id="documentationUrl" display="Estos datos se describen como">
         ¿Dónde se describe?
         <input type="url" placeholder="Documentación URL"/>
         <help>Ofrezca un URL para que las personas lean sobre el contenido de sus datos abiertos y encuentren más detalles. Puede ser una página dentro de un catálogo más grande como data.gov.uk</help>
         <if test="this.releaseType() !== 'collection'">
            <requirement level="pilot">Usted debe tener una página web <sólida> que ofrezca documentación sobre los datos abiertos que usted publica, de manera que la gente entienda su contexto, contenido y utilidad.</requirement>
         </if>
         <if test="this.releaseType() === 'collection'">
            <requirement test="this.documentationUrl() !== ''">Usted debe tener una página web que ofrezca documentación <sólida> y acceso a los datos abiertos que usted publica, para que las personas puedan usarlos.</requirement>
         </if>
      </question>
      <question id="publisher" display="Estos datos son publicados por">
         Coloque el nombre de quién publica los datos
         <input placeholder="Publicador de datos" required="required"/>
         <help>Escriba el nombre de la organización que publica estos datos. Es probable que sea para quien usted trabaja, a menos que lo este haciendo en nombre de alguien más.</help>
      </question>
      <question id="publisherUrl" display="Estos datos son publicados en">
         ¿En qué página web se publicaron los datos?
         <input type="url" placeholder="URL de quien publica"/>
         <help>Ofrezca un URL a un sitio web, esto nos ayuda a agrupar los datos de la misma organización; incluso si las personas registran diferentes nombres.</help>
      </question>
      <question id="releaseType">
         ¿De qué tipo de publicación se trata?
         <radioset required="required">
            <option value="oneoff">
               Un lanzamiento único de un solo conjunto de datos
               <help>Este es un archivo único y usted, actualmente, no planea publicar archivos similares en el futuro.</help>
            </option>
            <option value="collection">
               Un lanzamiento único de varios conjuntos de datos relacionados.
               <help>Esta es una colección de archivos relacionados sobre los mismos datos y usted, actualmente, no planea publicar colecciones similares en el futuro.</help>
            </option>
            <option value="series">
               Una publicación periódica de series de conjuntos de datos relacionadas.
               <help>Esta es una secuencia de conjuntos de datos con actualizaciones periódicas planeadas para el futuro.</help>
            </option>
            <option value="service">
               Un servicio o API para acceder a los datos abiertos.
               <help>Este es un servicio web en vivo que expone los datos a los programadores, mediante una interfaz que ellos puedan consultar.</help>
            </option>
         </radioset>
      </question>
   </group>
   <group id="practical">
      Información práctica
      <help>Facilidad de localización, precisión, calidad y garantía</help>
      <group id="findability">
         Facilidad de localización.
         <help>¿Cómo ayuda a las personas a encontrar sus datos?</help>
         <question id="onWebsite">
            ¿Existe un enlace hacia estos datos abiertos desde su sitio web principal?
            <yesno/>
            <help>Los datos pueden ser encontrados más fácilmente si cuentan con un enlace desde su sitio web principal.</help>
            <requirement level="standard">Usted debe asegurar que las personas puedan encontrar sus datos desde su sitio web principal, de manera que las personas puedan encontrarlos más fácilmente.</requirement>
         </question>
         <if test="this.onWebsite() === 'true'">
            <repeat id="webPages">
               Página web
               <question id="webpage" display="El sitio web enlaza con los datos de">
                  ¿Qué página en su sitio web enlaza con los datos?
                  <input type="url" required="required" placeholder="URL de la página web"/>
                  <help>Ofrezca un URL en sitio web principal que incluya una liga a estos datos.</help>
               </question>
            </repeat>
         </if>
         <question id="listed">
            ¿Están sus datos enlistados dentro de alguna colección de bases de datos?
            <yesno/>
            <help>Los datos son encontrados más fácilmente por las personas cuando están en catálogos de datos relevantes. Por ejemplo, académicos, del sector público, de salud; o cuando aparecen en resultados de investigaciones relevantes.</help>
            <requirement level="standard">Usted debería asegurar que las personas puedan encontrar sus datos cuando los busquen en lugares que enlistan datos.</requirement>
         </question>
         <if test="this.listed() === 'true'">
            <repeat id="listings">
               Listado
               <question id="listing" display="Los datos aparecen en esta colección.">
                  ¿En dónde son enlistados?
                  <input type="url" required="required" placeholder="URL del listado"/>
                  <help>Ofrezca un URL donde los datos sean enlistados dentro de una colección relevante. Por ejemplo, data.gov.uk (si se trata de datos del sector público de Reino Unido), hub.data.ac.uk (si se trata de datos académicos del Reino Unido) o un URL para los resultados de motores de búsqueda.</help>
               </question>
            </repeat>
         </if>
         <question id="referenced">
            ¿Son estos datos referidos en publicaciones suyas?
            <yesno/>
            <help>Cuando usted hace referencia a sus datos dentro de sus propias publicaciones, como son reportes, presentaciones o publicaciones en blogs; usted aporta mayor contexto y ayuda a las personas a encontrarlos y entenderlos mejor.</help>
            <requirement level="standard">Usted debería hacer referencia a sus datos desde sus propias publicaciones, para que las personas estén al tanto de su disponibilidad y su contexto.</requirement>
         </question>
         <if test="this.referenced() === 'true'">
            <repeat id="references">
               Referencia
               <question id="reference" display="Estos datos son referidos de">
                  ¿En dónde se hace referencia a estos datos?
                  <input type="url" required="required" placeholder="URL de referencia"/>
                  <help>Ofrezca un URL a un documento en el que se citen o refieran estos datos.</help>
               </question>
            </repeat>
         </if>
      </group>
      <group id="accuracy">
         Precisión
         <help>¿Cómo mantiene sus datos actualizados?</help>
         <if test="this.releaseType() === 'service'">
            <question id="serviceType" display="Los datos detrás la API">
               ¿Los datos que están detrás de su API cambian?
               <radioset required="pilot">
                  <option value="static" display="No van a cambiar">
                     No, la API da acceso a datos estáticos
                     <help>Algunas API sólo facilitan el acceso a datos que no cambian, particularmente cuando hay muchos de estos.</help>
                  </option>
                  <option value="changing" display="Cambiarán">
                     Sí, la API proporciona acceso a datos que cambian
                     <help>Algunas API proporcionan acceso instantáneo a datos más actualizados y siempre cambiantes</help>
                  </option>
               </radioset>
            </question>
         </if>
         <if test="this.releaseType() === 'oneoff' || this.releaseType() === 'collection' || (this.releaseType() === 'service' && this.serviceType() === 'static')">
            <question id="timeSensitive"
                      display="La precisión o la relevancia de estos datos">
               ¿Los datos de usted caducarán?
               <radioset>
                  <option value="true" display="Caducan">
                     Sí, estos datos expirarán
                     <help>Por ejemplo, un conjunto de datos sobre las paradas de autobús expirará cuando éstas cambien o se agreguen otras nuevas.</help>
                  </option>
                  <option value="timestamped" display="Expiran pero están temporalizados">
                     Sí, estos datos expirarán en un futuro, pero estan temporalizados
                     <help>Por ejemplo, la estadísticas de población usualmente incluyen una temporalidad fija para indicar cuándo éstas son relevantes</help>
                     <requirement level="pilot">Usted debería indicar la temporalidad de sus datos cuando los lance, para que las personas conozcan el periodo al que se relacionan y cuando caducarán.</requirement>
                  </option>
                  <option value="false" display="No expiran">
                     No, estos datos no contienen ninguna información sensible al tiempo
                     <help>Por ejemplo, los resultados de un experimento no expirarán porque los datos precisos reportan los resultados observados</help>
                     <requirement level="standard">Usted debería publicar actualizaciones de los datos sensibles al tiempo, para que estos no se vuelvan obsoletos</requirement>
                  </option>
               </radioset>
            </question>
         </if>
         <if test="this.releaseType() === 'series'">
            <question id="frequentChanges" display="Estos datos cambien">
               ¿Estos datos cambian mínimo diariamente?
               <yesno required="pilot" yes="Mínimo diariamente"/>
               <help>Informe a las personas si los datos subyacentes cambian la mayoría de los días. Cuando los datos cambian con frecuencia también expiran rápido, entonces las personas necesitan si usted actualizada frecuente y rápidamente.</help>
            </question>
            <if test="this.frequentChanges() === 'true'">
               <question id="seriesType" display="Estos datos son una serie de">
                  ¿Qué tipo de serie de conjuntos de datos es ésta?
                  <radioset required="exemplar">
                     <option value="dumps" display="Copias de una base da datos">
                        Copias regulares de un conjunto de datos completa
                        <help>Seleccione si publica nuevas copias, actualizadas y completas de sus conjuntos de datos. Cuando usted crea un dump de bases de datos, es útil para las personas tener acceso a una fuente de los cambios, para que puedan guardar sus copias actualizadas.</help>
                     </option>
                     <option value="aggregate" display="Agregados de datos cambiantes">
                        Agregados regulares de datos cambiantes
                        <help>Seleccione si usted crea nuevos conjuntos de datos regularmente. Usted puede hacer esto si los datos subyacentes no pueden ser lanzados como datos abiertos o si usted sólo publica datos que sean nuevos desde la última publicación.</help>
                     </option>
                  </radioset>
               </question>
               <if test="this.seriesType() === 'dumps'">
                  <question id="changeFeed" display="Una fuente de los cambios de estos datos">
                     ¿Está disponible una fuente de cambios?
                     <yesno yes="Está disponible"/>
                     <help>Informe a las personas si usted provee cambios que afecten los datos, como nuevas entradas o enmiendas a entradas existentes. Las fuentes pueden estar en formatos RSS, Atom o personalizados.</help>
                     <requirement level="exemplar">Usted debería proveer una fuente de cambios de sus datos, para que las personas guarden sus copias actualizadas y precisas.</requirement>
                  </question>
               </if>
               <question id="frequentSeriesPublication"
                         display="Nuevos lanzamientos de estos datos se hacen">
                  ¿Con qué frecuencia usted crea nuevos lanzamientos?
                  <radioset>
                     <option value="rarely">
                        Menos de una vez al mes
                     </option>
                     <option value="monthly">
                        Por lo menos una vez al mes
                        <requirement level="pilot">Usted debería crear un nuevo lanzamiento de conjunto de datos cada mes, para que las personas guarden sus copias actualizadas y precisas.</requirement>
                     </option>
                     <option value="weekly">
                        Al menos una vez a la semana
                        <requirement level="standard">Usted debería crear un nuevo lanzamiento de conjunto de datos cada semana, para que las personas guarden sus copias actualizadas y precisas.</requirement>
                     </option>
                     <option value="daily">
                        Por lo menos una vez al día
                        <requirement level="exemplar">Usted debería crear un nuevo lanzamiento de conjunto de datos cada día, para que las personas puedan guardar sus copias actualizadas y precisas.</requirement>
                     </option>
                  </radioset>
                  <help>Esto determina cuan caducos los datos se tornarán antes de que las personas puedan obtener una actualización.</help>
               </question>
            </if>
            <question id="seriesPublicationDelay"
                      display="La demora entre la creación y la publicación de estos datos es">
               ¿Qué tan larga es la demora entre la creación sus bases de datos y su publicación estas?
               <radioset>
                  <option value="extreme">
                     Mayor a la brecha entre lanzamientos
                     <help>Por ejemplo, si usted crea una nueva versión de conjuntos de datos todos los días, elija esto si le toma más de un día en publicarlos.</help>
                  </option>
                  <option value="reasonable">
                     Aproximadamente lo mismo que la brecha entre lanzamientos
                     <help>Por ejemplo, si usted crea una nueva versión de sus conjuntos de datos todos los días, elija esto si le toma aproximadamente un día publicarlos</help>
                     <requirement level="pilot">Usted debería tener una demora razonable entre la creación y la publicación de sus bases de datos, que sea menor a la brecha entre lanzamientos para que las personas puedan guardar sus copias actualizadas y precisas.</requirement>
                  </option>
                  <option value="good">
                     Menos de la mitad de la brecha entre lanzamientos.
                     <help>Por ejemplo, si usted crea una nueva versión de sus conjuntos de datos todos los días, elija esto si le toma menos de doce horas publicarlos.</help>
                     <requirement level="standard">Usted debería tener una demora corta entre la creación y la publicación de sus conjuntos de datos, que sea menos que la mitad de la brecha entre lanzamientos para que las personas guarden sus coipas actualizadas y precisas.</requirement>
                  </option>
                  <option value="minimal" display="Mínimo">
                     Hay un mínimo o no demora alguna
                     <help>Elija esto si usted publica en pocos segundos o minutos</help>
                     <requirement level="exemplar">Usted debería tener un retraso mínimoen la creación y publicación de sus conjuntos de datos, para que las personas puedan guardar sus copias actualizadas y precisas.</requirement>
                  </option>
               </radioset>
            </question>
         </if>
         <if test="this.releaseType() === 'service'">
            <question id="provideDumps" display="El curador publica">
               ¿Usted también publica dumps de estos conjuntos de datos?
               <yesno yes="Vertederos de datos"/>
               <help>Un dump es un extracto de toda la base de datos en un documento que las personas pueden descargar. Esto permite a las personas realizar análisis que es diferente del que se realiza de un acceso API.</help>
               <requirement level="standard">Usted debería permitir a las personas descargar su conjunto de datos completa, para que puedan realizar análisis más completos y precisos de los datos.</requirement>
            </question>
            <if test="this.serviceType() === 'changing'">
               <if test="this.provideDumps() === 'true'">
                  <question id="dumpFrequency"
                            display="Los dumps de los conjuntos de datos son creados">
                     ¿Con qué frecuencia crea dumps de los conjuntos de datos?
                     <radioset>
                        <option value="rarely">
                           Con menos frecuencia que una vez al mes
                        </option>
                        <option value="monthly">
                           Por lo menos una vez al mes
                           <requirement level="pilot">Usted debería crear un nuevo dump de su conjunto de datos cada mes, para que las personas tengan los últimos datos.</requirement>
                        </option>
                        <option value="weekly">
                           Una semana después de cualquier cambio
                           <requirement level="standard">Usted debería crear un dump del conjunto de datos una semana después de cualquier cambio, para que las personas esperen lo menos posible por los últimos datos.</requirement>
                        </option>
                        <option value="daily">
                           Un día después de cualquier cambio
                           <requirement level="exemplar">Usted debería crear un nuevo dumop del conjunto de datos un día después de cualquier cambio, para que se les facilite a las personas obtener los últimos datos.</requirement>
                        </option>
                     </radioset>
                     <help>Un acceso rápido a extractos más frecuentes de toda la base de datos significa que las personas pueden iniciar más rápido con los datos más actualizados.</help>
                  </question>
               </if>
            </if>
            <if test="this.timeSensitive() !== 'true'">
               <question id="corrected" display="Cualquier error en esto datos es">
                  ¿Serán corregidos sus datos si cuenta con errores?
                  <yesno yes="Corregido"/>
                  <help>Es una buena práctica el corregir errores en sus datos especialmente si usted mismo los usa. Cuando hace correcciones, las personas necesitan ser informadas.</help>
                  <requirement level="standard">Usted debería corregir sus datos cuando las personas reporten errores, para que todos se beneficien de las mejoras en precisión.</requirement>
               </question>
            </if>
         </if>
      </group>
      <group id="quality">
         Calidad
         <help>¿Cuántas personas pueden confiar en sus datos?</help>
         <question id="qualityUrl" display="La calidad de los datos está documentada en">
            ¿En dónde documenta cuestiones sobre la calidad de los datos?
            <input type="url"
                   placeholder="URL de la documentación de calidad de los datos"/>
            <help>Ofrezca un URL donde las personas puedan informarse sobre la calidad de sus datos. Las personas aceptan que los errores son inevitables, desde un malfuncionamiento del equipo o errores que suceden en la migración de sistemas. Usted debe ser abierto sobre la calidad para que las personas puedan juzgar qué tanto confían en sus datos.</help>
            <requirement level="standard">Usted debería documentar cualquier asunto conocido sobre la calidad de sus datos, para que las personas puedan decidir cuánto confiar en sus datos.</requirement>
         </question>
         <question id="qualityControlUrl"
                   display="El proceso de control de calidad se describe en">
            ¿En dónde se describe su proceso de control de calidad?
            <input type="url"
                   placeholder="URL de la descripción del proceso de control de calidad"/>
            <help>Ofrezca un URL para que las personas puedan conocer sobre las revisiones en curso de sus datos, ya sean automáticos o manuales. Esto les reasegura que usted toma la calidad seriamente y que alentará mejoras que beneficien a todos.</help>
            <requirement level="exemplar">Usted debería documentar su proceso de control de calidad, para que las personas puedan decidir que tanto confían en sus datos.</requirement>
         </question>
      </group>
      <group id="guarantees">
         Garantías
         <help>¿Cuántas personas pueden depender de la disponibilidad de sus datos?</help>
         <question id="backups" display="Los datos están">
            ¿Realiza usted respaldos fuera del sitio?
            <yesno yes="Respaldo fuera del sitio"/>
            <help>El realizar respaldos regualres fuera del sitio ayuda a asegurar que los datos no se perderán en caso de un accidente.</help>
            <requirement level="standard">Usted debería tener un respaldo fuera de sitio, para que los datos no se pierdan en caso de que un accidente suceda</requirement>
         </question>
         <if test="this.releaseType() === 'service'">
            <question id="slaUrl" display="La disponibilidad del servicio se describe en">
               ¿En dónde describe usted cualquier garantía sobre la disponibilidad del servicio?
               <input type="url"
                      placeholder="URL de documentación de disponibilidad del servicio"/>
               <help>Ofrezca un URL para una página que describa que garantías tiene usted sobre el servicio que está disponible para uso de las personas. Por ejemplo, puede que usted garantice un periodo de uso del 99.5%, o puede no proveer de garantía alguna.</help>
               <requirement level="standard">Usted debería describir qué garantías tiene usted sobre la disponibilidad del servicio, para que las personas sepan que tanto pueden depender de ello.</requirement>
            </question>
            <question id="statusUrl" display="El estado del servicio se da en">
               ¿En dónde ofrece usted información sobre el estado de servicio actual?
               <input type="url" placeholder="URL de estado de servicio"/>
               <help>Ofrezca un URL para una página que informe a las personas sobre el actual estado de su servicio, incluyendo cualquier falla de la usted tenga conocimiento.</help>
               <requirement level="exemplar">Usted debería contar con una página de estado de servicio que le informe a las personas sobre el actual estado de su servicio.</requirement>
            </question>
         </if>
         <question id="onGoingAvailability" display="Los datos están disponibles">
            ¿Cuánto tiempo estarán disponibles estos datos?
            <radioset>
               <option value="experimental"
                       display="Experimentalmente y podrían desaparecer en cualquier tiempo">
                  Podrían desaparecer en cualquier momento
               </option>
               <option value="short" display="Experimentalmente más o menos por otro año">
                  Están disponibles de manera experimental, pero deben estarlo aproximadamente por otro año
                  <requirement level="pilot">Usted debería garantizar que sus datos estarán disponibles en este formato por lo menos un año, para que las personas pueden decidir que tanto depender en sus datos.</requirement>
               </option>
               <option value="medium" display="Por lo menos por un par de años">
                  Están en un plan a mediano plazo, por lo que deberían seguir aproximadamente por un par de años
                  <requirement level="standard">Usted debería garantizar que sus datos estarán disponibles en este formato en plazo mediano, para que las personas puedan decidir que tanto depender en sus datos.</requirement>
               </option>
               <option value="long" display="Por un largo tiempo">
                  Es parte de sus operaciones día a día, por lo que estarán publicados por un largo tiempo
                  <requirement level="exemplar">Usted debería garantizar que sus datos estarán disponibles en este formato en un largo plazo, para que las personas puedan decidir que tanto depender en sus datos.</requirement>
               </option>
            </radioset>
         </question>
      </group>
   </group>
   <group id="technical">
      Información técnica
      <help>Locaciones, formatos y confianza</help>
      <group id="locations">
         Locaciones
         <help>¿Cómo pueden las personas acceder a sus datos?</help>
         <if test="this.releaseType() === 'oneoff'">
            <question id="datasetUrl" display="Estos datos son publicados en">
               ¿Dónde está su conjunto de datos?
               <input type="url" placeholder="URL de conjunto de datos"/>
               <help>Ofrezca un URL directo al conjunto de datos. Los Datos abiertos deberían ser enlazados directamente en la página para que las personas puedan encontrarlos fácilmente y reusarlos.</help>
               <if test="this.documentationUrl() === ''">
                  <requirement test="this.datasetUrl() !== ''">Usted debería proveer ya sea un URL a sus datos o un URL a documentación sobre estos, para que las personas puedan encontrarlos.</requirement>
               </if>
               <if test="this.documentationUrl() !== ''">
                  <requirement test="this.datasetUrl() !== ''" level="pilot">Usted debería tener un URL que sea un enlace directo a los propios datos, para que las personas accedan a estos con facilidad.</requirement>
               </if>
            </question>
         </if>
         <if test="this.releaseType() === 'series'">
            <question id="versionManagement">
               ¿Cómo publica usted series de las mismos conjuntos de datos?
               <checkboxset>
                  <option value="current">
                     Como un único URL que es regularmente actualizado
                     <help>Elija esto si existe un único URL para que las personas descarguen la versión más reciente de su conjunto de datos actual.</help>
                     <requirement level="standard">Usted debería tener un único y persistente URL para descargar la actual versión de su conjunto de datos, para que las personas accedan con facilidad</requirement>
                  </option>
                  <option value="template">
                     Como URL consistentes para cada lanzamiento
                     <help>Elija esto si la URL del conjunto de datos siguen un patrón regular que incluye el día de la publicación, por ejemplo, un URL que inicie "2013-04". Esto ayuda a las personas a entender que tan seguido usted hace nuevos lanzamientos de datos, y a escribir secuencias de comandos que busquen nuevos en cada momento que sean lanzados.</help>
                     <requirement level="pilot">Usted debería usar un patrón consistente para diferentes URL de lanzamientos, para que las personas puedan descargar cada uno automáticamente.</requirement>
                  </option>
                  <option value="list">
                     Como una lista de lanzamientos
                     <help>Elija esto si usted tiene una lista de conjuntos de datos en una página web o en una fuente (como Atom o RSS) cada uno con enlaces individuales a lanzamientos y sus detalles. Esto ayuda a las personas a entender qué tan seguido usted lanza datos, y para escribir secuencias de comandos que busquen nuevos en cada momento que sean lanzados.</help>
                     <requirement level="standard">Usted debería tener un documento o fuente con una lista de lanzamientos disponibles, para que las personas creen secuencias de comandos para descargar todos.</requirement>
                  </option>
               </checkboxset>
               <if test="this.documentationUrl() === '' && this.versionManagement() !== 'current' && this.versionManagement() !== 'template' && this.versionManagement() !== 'list'">
                  <requirement>Usted debería proveer acceso a lanzamientos de sus datos mediante un URL que de la actual versión, una detectable serie de URL o mediante una página de documentación para que las personas puedan encontrarla.</requirement>
               </if>
            </question>
            <if test="this.versionManagement().current">
               <question id="currentDatasetUrl"
                         display="El conjunto de datos esta tisponible en">
                  ¿En dónde se encuentra tu actual conjunto de datos?
                  <input type="url"
                         placeholder="URL actual del conjunto de datos"
                         required="required"/>
                  <help>Ofrezca un único URL a la versión más reciente de su conjunto de datos. El contenido de este URL cambiar cada vez que una nueva versión sea lanzada.</help>
               </question>
            </if>
            <if test="this.versionManagement().template">
               <question id="versionsTemplateUrl"
                         display="Los lanzamientos siguen este patrón consistente de URL">
                  ¿Qué formato de URL siguen los lanzamientos de su conjunto de datos?
                  <input type="text"
                         placeholder="URL de versión de patrones"
                         required="required"/>
                  <help>Esta es una estructura de URL cuando usted publica diferentes lanzamientos. Use "variables" para indicar partes del patrón de URL que cambien, por ejemplo, "http://example.com/data/monthly/mydata-{YY}{MM}.csv`</help>
               </question>
            </if>
            <if test="this.versionManagement().list">
               <question id="versionsUrl" display="Lanzamientos de estos datos se enlistan en">
                  ¿En dónde está su lista de lanzamientos de conjuntos de datos?
                  <input type="url"
                         placeholder="URL de versión de lista"
                         required="required"/>
                  <help>De un URL a una página o fuente con una lectura mecánica de la lista de conjuntos de datos. Use el URL de la primera página que debería enlazarlo con el resto de las páginas.</help>
               </question>
            </if>
         </if>
         <if test="this.releaseType() === 'service'">
            <question id="endpointUrl" display="El punto final del servicio API es">
               ¿En dónde está el endpoint su API?
               <input type="url" placeholder="URL del endpoint"/>
               <help>De un URL que sea un punto inicial para las secuencias de comandos de las personas para que accedan a su API. Este debe ser un documento de descripción de servicio que ayuda a la secuencia de comandos a cuadrar que servicios existen.</help>
               <if test="this.documentationUrl() === ''">
                  <requirement test="this.endpointUrl() !== ''">Usted debe proveer ya sea el URL del endpoint de su API o un URL a su documentación, para que las personas puedan encontrarlo.</requirement>
               </if>
               <if test="this.documentationUrl() !== ''">
                  <requirement test="this.endpointUrl() !== ''" level="standard">Usted debería tener un documento de descripción de servicio o un punto de entrada único a su API, para que las personas accedan.</requirement>
               </if>
            </question>
            <if test="this.provideDumps() === 'true'">
               <question id="dumpManagement">
                  ¿Cómo publica usted vertederos de sus bases de datos?
                  <checkboxset>
                     <option value="current">
                        Como un único URL que es regularmente actualizado
                        <help>Escoja esto un único URL para que las personas descarguen la más reciente versión del dump actual de bases de datos.</help>
                        <requirement level="standard">Usted debería tener un único y persistente URL para descargar su dump actual de bases de datos, para que las personas lo encuentren.</requirement>
                     </option>
                     <option value="template">
                        Como un URL consistente para cada lanzamiento
                        <help>Elija esto si URL del dump del conjunto de datos sigue un patrón regular que incluya la fecha de publicación, por ejemplo, un URL que inicie "2013-04". Esto ayuda a las personas a entender que tan seguido lanza usted datos, y a escribir secuencias de comandos que busquen nuevos en cada momento que sean lanzados.</help>
                        <requirement level="exemplar">Usted debería usar un patrón consistente para las URLs del dump del conjunto de datos, para que las personas puedan descargar cada uno automáticamente.</requirement>
                     </option>
                     <option value="list">
                        Como una lista de lanzamientos
                        <help>Elija esto si usted tiene una lista de vertederos de bases de datos en una página web o en una fuente (como son Atom o RSS) cada uno con enlaces individuales a lanzamientos y sus detalles. Esto ayuda a las personas que tan seguido libera usted datos, y a escribir secuencias de comandos que busquen otros nuevos en cada momento que sean lanzados.</help>
                        <requirement level="exemplar">Usted debería tener un documento o fuente con una lista de los dumps de los conjuntos de datos disponibles, para que las personas puedan crear secuencias de comandos y los descarguen todos.</requirement>
                     </option>
                  </checkboxset>
               </question>
               <if test="this.dumpManagement().current">
                  <question id="currentDumpUrl"
                            display="El dump del conjunto de datos más reciente está siempre disponible en">
                     ¿Dónde está el dump actual del conjunto de datos?
                     <input type="url" placeholder="URL del dump actual" required="required"/>
                     <help>Dé un URL al dump más reciente del conjunto de datos. El contenido de este URL debería cambiar cada vez que un nuevo dums sea creado.</help>
                  </question>
               </if>
               <if test="this.dumpManagement().template">
                  <question id="dumpsTemplateUrl"
                            display="¿Los vertederos del conjunto de datos siguen el consistente patrón de URL?">
                     ¿Qué formato de URL siguen los dumps de los conjuntos de datos?
                     <input type="text"
                            placeholder="URL dela plantilla del dump"
                            required="required"/>
                     <help>Esta es la estructura de URL cuando usted publica diferentes lanzamientos. Use "variable" para indicar las partes del patrón de URL que cambian, por ejemplo, "http://example.com/data/monthly/mydata-{YY}{MM}.csv`</help>
                  </question>
               </if>
               <if test="this.dumpManagement().list">
                  <question id="dumpsUrl"
                            display="Una lista de los dumps de los conjuntos de datos está en">
                     ¿Dónde está lista de dumps de los conjuntos de datos disponibles?
                     <input type="url" placeholder="URL de lista de dumps" required="required"/>
                     <help>De un URL a una página o fuente con una lista de los dumps de los conjuntos de datos legible por máquina. Use el URL de la primera página que debería enlazarlo con el resto de las páginas.</help>
                  </question>
               </if>
            </if>
         </if>
         <if test="this.changeFeed() === 'true'">
            <question id="changeFeedUrl"
                      display="Una fuente de los cambios de estos datos está en">
               ¿En dónde está su fuente de cambios?
               <input type="url"
                      placeholder="URL de fuente de cambios"
                      required="required"/>
               <help>De un URL a una página web o fuente que provea una lectura mecánica de una lista de las versiones previas de vertederos de bases de datos. Use el URL de la primera página que debería enlazarlo con el resto de las páginas.</help>
            </question>
         </if>
      </group>
      <group id="format">
         Formatos
         <help>¿Cómo pueden las personas trabajar con sus datos?</help>
         <question id="machineReadable" display="Estos datos son">
            ¿Los datos son legibles para una computadora?
            <yesno yes="Legible por máquinas"/>
            <help>Las personas prefieren formatos de datos en los que sea sencillo para una computadora procesarlos, por rapidez y precisión. Por ejemplo, una fotocopia escaneada de una hoja de cálculo no podrá tener una lectura mecánica pero un archivo CSV sí.</help>
            <requirement level="pilot">Usted debería proveer sus datos en un formato legible por máquinas, para que sea fácil de procesar.</requirement>
         </question>
         <question id="openStandard" display="El formato de estos datos es">
            ¿Están los datos en un formato estándar de datos abiertos?
            <yesno yes="Un formato abierto estandar"/>
            <help more="https://www.gov.uk/government/uploads/system/uploads/attachment_data/file/183962/Open-Standards-Principles-FINAL.pdf">Los estándares abiertos son creados a través de un proceso justo, transparente y colectivo. Cualquiera puede implementarlos y existe mucho apoyo, por lo cual, es más fácil para usted compartir datos con más personas. Por ejemplo, XML, CSV, y JSON son estándares abiertos.</help>
            <requirement level="standard">Usted debería proveer sus datos en un formato abierto estandar, para que las personas puedan usar ampliamente herramientas para procesarlo más fácilmente.</requirement>
         </question>
         <question id="dataType">
            ¿Qué tipo de datos publica?
            <checkboxset required="pilot">
               <option value="documents">
                  Documentos de lectura humana
                  <help>Elija esto si sus datos son intencionados para consumo humano. Por ejemplo, documentos de políticas, documentos técnicos, reportes y minutas de reuniones. Estos usualmente tienen alguna estructura para sí, pero son en su mayoría texto.</help>
               </option>
               <option value="statistical">
                  Datos estadísticos como cuentas, promedios y porcentajes
                  <help>Elija esto si sus datos son estadísticas o datos numéricos como cuentas, promedios y porcentajes. Puede tratarse de resultados de censo, información del flujo vehicular o estadísticas de crímenes.</help>
               </option>
               <option value="geographic">
                  Información geográfica, tales como puntos y límites.
                  <help>Elija esto si sus datos pueden ser trazados en un mapa como puntos, límites o líneas.</help>
               </option>
               <option value="structured">
                  Otros tipos de datos estructurados
                  <help>Elija esto si sus datos son estructurados en otras maneras. Puede tratarse de detalles de eventos, horarios de trenes, información de contacto o cualquier cosa que pueda ser interpretada como datos, y analizada y presentada en múltiples formas.</help>
               </option>
            </checkboxset>
         </question>
         <if test="this.dataType().documents">
            <question id="documentFormat" display="Documentos son publicados">
               ¿Sus documentos de lectura humana incluyen formatos que?
               <radioset>
                  <option value="semantic" display="En un formato semántico">
                     Describa la estructura semántica como HTML, DocBook o Markdown
                     <help>Estos formatos de estructuras etiquetadas como capítulos, encabezados y tablas que facilitan la creación automática de resúmenes como tablas de contenido y glosarios. También facilitan la aplicación de diferentes estilos al documento para que su apariencia cambie.</help>
                     <requirement level="standard">Usted debería publicar documentos en in formato que exponga la estructura semántica, para que las personas puedan exponerlos en diferentes estilos.</requirement>
                  </option>
                  <option value="format" display="En un formato de exhibición">
                     Describa información sobre el formateo como OOXML o PDF
                     <help>Estos formatos enfatizan la apariencia como las fuentes, colores y posicionamiento de diferentes elementos dentro de la página. Estos son buenos para consumo humano, pero no son tan sencillos para que las personas los procesen automáticamente y cambien el estilo.</help>
                     <requirement level="pilot">Usted debería publicar documentos en un formato diseñado específicamente para estos, para que sean fáciles de procesar.</requirement>
                  </option>
                  <option value="unsuitable" display="En un formato inadecuado para documentos">
                     No son intencionados para documentos como Excel, JSON o CVS
                     <help>Estos formatos se adecuan más a datos tabulados o estructurados</help>
                  </option>
               </radioset>
            </question>
         </if>
         <if test="this.dataType().statistical">
            <question id="statisticalFormat" display="Datos estadísticos son publicados">
               ¿Sus datos estadísticos incluyen formatos que?
               <radioset>
                  <option value="statistical" display="En un formato de datos estadísticos">
                     Exponga la estructura de hipercubos de datos estadísticos como SDMX o Data Cube

                     <help>Observaciones individuales en hipercubos se relacionan con una medida particular y a un conjunto de dimensiones. Cada observación puede también estar relacionada con anotaciones que dan contexto extra. Formatos como SDMX and Data Cube son diseñados para expresar esta estructura subyacente.</help>
                     <requirement level="exemplar">Usted debería publicar datos estadísticos en un formato que exponga dimensiones y medidas, para que sean fáciles de analizar.</requirement>
                  </option>
                  <option value="tabular" display="En un formato de datos tabulados">
                     Tratar datos estadísticos como una tabla como CVS
                     <help>Estos formatos colocan datos estadísticos dentro de un tabla de filas y columnas. Esto carece de contexto extra sobre el hipercubo subyacente pero es fácil de procesar.</help>
                     <requirement level="standard">Usted debería publicar datos tabulados en un formato que exponga tablas de datos, para que sea fácil de analizar.</requirement>
                  </option>
                  <option value="format" display="En un formato de presentación">
                     Enfóquese en el formato de datos tabulados como Excel
                     <help>Las hojas de cálculo usan formatos como itálicas o negritas y sangría dentro de los campos para describir su apariencia y estructura subyacente. Este estilo ayuda a las personas a entender el significado de sus datos pero los vuelve menos adecuados para que las computadoras los procesen.</help>
                     <requirement level="pilot">Usted debería publicar datos tabulados en un formato diseñado para tal propósito, para que sea fácil de procesar.</requirement>
                  </option>
                  <option value="unsuitable"
                          display="En un formato inadecuado para datos estadísticos">
                     No son intencionados para datos estadísticos o tabulados como Word o PDF
                     <help>Estos formatos no se adecuan a datos estadísticos porque obscurecen la estructura subyacente de los datos.</help>
                  </option>
               </radioset>
            </question>
         </if>
         <if test="this.dataType().geographic">
            <question id="geographicFormat" display="Datos geográficos son publicados">
               ¿Sus datos geográficos incluyen formatos que?
               <radioset>
                  <option value="specific" display="En un formato de datos geográficos">
                     Son diseñados para datos geográficos como KML o GeoJSON

                     <help>Estos formatos describen puntos, líneas y límites, y exponen estructuras en los datos que facilitan el procesamiento automático</help>
                     <requirement level="exemplar">Usted debería publicar datos geográficos en un formato diseñado a propósito, para que las personas puedan usar ampliamente las herramientas disponibles para procesarlos.</requirement>
                  </option>
                  <option value="generic" display="En un formato para datos genéricos">
                     Mantiene los datos estructurados como JSON, XML o CVS
                     <help>Cualquier formato guarde datos estructurados normales puede expresar datos geográficos también, particularmente si sólo sostiene datos acerca de puntos.</help>
                     <requirement level="pilot">Usted debería publicar datos geográficos como datos estructurados, para que sea fácil de procesar.</requirement>
                  </option>
                  <option value="unsuitable"
                          display="En un formato inadecuado para datos geográficos">
                     No son diseñados para datos geográficos como Word o PDF
                     <help>Estos formatos no se adecuan a datos geográficos porque obscurecen la estructura subyacente de los datos</help>
                  </option>
               </radioset>
            </question>
         </if>
         <if test="this.dataType().structured">
            <question id="structuredFormat" display="Los datos estructurados son publicados">
               ¿Sus datos estructurados incluyen formatos que?
               <radioset>
                  <option value="suitable" display="En un formato de datos estructurados">
                     No son diseñados para datos estructurados como JSON, XML, Turtle o CSV
                     <help>Estos formatos organizan los datos en una estructura básica de las cosas que tienen valores para un conjunto conocido de propiedades. Estos formatos son fáciles para que las computadoras los procesen automáticamente.</help>
                     <requirement level="pilot">Usted debería publicar datos estructurados en formatos diseñados a propósito, para que sean fáciles de procesar.</requirement>
                  </option>
                  <option value="unsuitable"
                          display="En un formato inadecuado para datos estructurados">
                     No diseñados para datos estructurados como Word o PDF
                     <help>Estos formatos no se adecuan a este tipo de datos porque obscurecen su estructura subyacente</help>
                  </option>
               </radioset>
            </question>
         </if>
         <question id="identifiers" display="Los datos incluyen">
            ¿Sus datos utilizan identificadores persistentes?
            <yesno yes="Identificadores persistentes"/>
            <help>Los datos son usualmente acerca de cosas reales como escuelas, caminos o usos de un esquema de codificación. Si los datos de diferentes fuentes utilizan el mismo identificador persistente y único para referirse a las mismas cosas, las personas pueden combinar fuentes fácilmente para crear datos más útiles. Los identificadores pueden ser GUIDs, DOIs o URL</help>
            <requirement level="standard">Usted debería utilizar identificadores para cosas en sus datos, para que sean fácilmente relacionados con otros datos sobre esas mismas cosas</requirement>
         </question>
         <if test="this.identifiers() === 'true'">
            <question id="resolvingIds" display="Los identificadores persistentes">
               ¿Pueden los identificadores de sus datos ser utilizados para encontrar información extra?
               <radioset>
                  <option value="false" display="">
                     No, los identificadores no pueden ser utilizados para encontrar información extra
                  </option>
                  <option value="service" display="Resuelva usando un servicio">
                     Sí, hay un servicio que las personas pueden usar para resolver los identificadores
                     <help>Los servicios en línea pueden ser usados para dar información a las personas sobre los identificadores como GUIDs o DOIs, que no pueden ser accedidos directamente en la manera en que los URL son</help>
                     <requirement level="standard">Usted debería proveer un servicio para resolver los identificadores que usted usa, para que las personas puedan encontrar información extra sobre estos.</requirement>
                  </option>
                  <option value="resolvable" display="Resuelva porque son URL">
                     Sí, los identificadores son URL que resuelven para dar información
                     <help>Los URL son útiles tanto para las personas como las computadoras. Las personas pueden poner un URL en sus buscadores y leer más información, como companies and postcodes. Las computadoras también pueden procesar esta información extra utilizando secuencias de comandos para acceder a los datos subyacentes.</help>
                     <requirement level="exemplar">Usted debería enlazar a una página web de información acerca de cada una de las cosas en sus datos, para que las personas puedan fácilmente encontrar y compartir esa información.</requirement>
                  </option>
               </radioset>
            </question>
            <if test="this.resolvingIds() === 'service'">
               <question id="resolutionServiceURL"
                         display="El servicio de resolución de identificadores está en">
                  ¿Dónde está el servicio que es utilizado para resolver identificadores?
                  <input type="url"
                         placeholder="URL de servicio de resolución de identificadores"/>
                  <help>El servicio de resolución debe tomar un identificador como un parámetro de indagación y regresar alguna información sobre las cosas que identifica.</help>
                  <requirement level="standard">Usted debería tener un URL a través del cual los identificadores pueden ser resueltos, para que una computadora pueda encontrar más información sobre estos</requirement>
               </question>
            </if>
            <question id="existingExternalUrls">
               ¿Existe en la web información de terceros sobre las cosas en tus datos?
               <yesno required="exemplar"/>
               <help>Algunas veces otras personas fuera de tu control proveen de URL a las cosas que tus datos refieren. Por ejemplo, tus datos podrían tener códigos postales en si mismos que enlacen con el sitio web Ordnance Survey</help>
            </question>
            <if test="this.existingExternalUrls() === 'true'">
               <question id="reliableExternalUrls">
                  ¿Es la información de terceros confiable?
                  <yesno required="exemplar"/>
                  <help>Si un tercero provee URL públicos sobre cosas de tus datos, estos probablemente toman pasos para asegurar la calidad y la fiabilidad de los datos. Esta es una medida de cuánto confía usted sus procesos para hacerlo. Busque su certificado de datos abiertos o sellos similares para ayudarle a tomar una decisión.</help>
               </question>
               <if test="this.reliableExternalUrls">
                  <question id="externalUrls" display="El URL de terceros es">
                     ¿Sus datos utilizan los URL de terceros?
                     <yesno yes="Referencias en estos datos"/>
                     <help>Usted debería usar los URL de terceros que resuelvan información sobre las cosas a las que sus datos se refieren. Esto reduce la duplicación y ayuda a las personas a combinar datos de diferentes fuentes, para que sea más útil.</help>
                     <requirement level="exemplar">Usted debería usar URL de la información de terceros, para que sea más fácil combinarlos con otros datos que también usen esos URL</requirement>
                  </question>
               </if>
            </if>
         </if>
      </group>
      <group id="trust">
         Confianza
         <help>¿Cuánto pueden confiar las personas en sus datos?</help>
         <question id="provenance" display="La procedencia de estos datos es">
            ¿Usted provee una procedencia legible para computadora de sus datos?
            <yesno yes="Lectura mecánica"/>
            <help more="http://www.w3.org/TR/prov-primer/">Esto es acerca de los orígenes de cómo sus datos fueron creados y procesados antes de ser publicados. Genera confianza en los datos que usted publica, porque las personas pueden rastrear cómo han sido manejados.</help>
            <requirement level="exemplar">Usted debería proveer un rastro de procedencia de lectura mecánica sobre sus datos, para que las personas puedan rastrear cómo fueron procesados.</requirement>
         </question>
         <question id="digitalCertificate"
                   display="Estos datos pueden ser verificados usando">
            ¿En dónde especifica cómo pueden las personas verificar que los datos que reciben provienen de usted?
            <input type="url" placeholder="URL de proceso de verificación"/>
            <help>Si usted entrega datos importantes a las personas, éstas deberían tener la posibilidad de revisar que lo que reciben es lo mismo que usted publica. Por ejemplo, usted puede firmar digitalmente los datos que publica, para que las personas pueden ver si han sido alterados.</help>
            <requirement level="exemplar">Usted debería describir cómo las personas pueden revisar que los datos que reciben son los mismo que usted publica, para que puedan confiar en estos.</requirement>
         </question>
      </group>
   </group>
   <group id="social">
      Información social
      <help>Documentación, asistencia y servicios</help>
      <group id="documentation">
         Documentación
         <help>¿Cómo ayuda usted a las personas a entender el contexto y contenido de sus datos?</help>
         <if test="this.documentationUrl() !== ''">
            <question id="documentationMetadata"
                      display="La documentación incluye datos legibles por máquina para">
               ¿Su documentación de datos incluye datos legibles por máquina para?
               <checkboxset>
                  <option value="title">
                     Título
                     <requirement level="standard">Usted debería incluir un título a sus datos legibles por máquina en su documentación, para que las personas sepan cómo referirse a ésta.</requirement>
                  </option>
                  <option value="description">
                     Descripción
                     <requirement level="standard">Usted debería incluir una descripción de datos legibles por máquina en su documentación, para que las personas sepan qué contienen</requirement>
                  </option>
                  <option value="issued">
                     Fecha de lanzamiento
                     <requirement level="standard">Usted debería incluir una fecha de lanzamiento de datos legibles por máquina en su documentación, para que las personas sepan qué tan oportunos son</requirement>
                  </option>
                  <option value="modified">
                     Fecha de modificación
                     <requirement level="standard">Usted debería incluir una última fecha de modificación legible por máquina en su documentación, para que las personas sepan que cuentan con los últimos datos</requirement>
                  </option>
                  <option value="accrualPeriodicity" display="Frecuencia de liberación">
                     Frecuencia de lanzamientos
                     <requirement level="standard">Usted debería proveer metadatos legibles por máquina sobre la frecuencia lanza usted nuevas versiones de sus datos, para que las personas sepan con qué frecuencia los actualiza.</requirement>
                  </option>
                  <option value="identifier">
                     Identificador
                     <requirement level="standard">Usted debería incluir un URL canónico para sus datos en su documentación legible por máquina, para que las personas sepan cómo acceder a estos de forma consistente.</requirement>
                  </option>
                  <option value="landingPage">
                     Página de destino
                     <requirement level="standard">Usted debería incluir un URL canónico para sus datos en su documentación legible por máquina, para que las personas sepan cómo acceder a estos de forma consistente.</requirement>
                  </option>
                  <option value="language">
                     Idioma
                     <requirement level="standard">Usted debería el lenguaje de datos en su documentación legible por máquina, para que las personas que los busquen sepan si podrán entenderlos.</requirement>
                  </option>
                  <option value="publisher">
                     Editor
                     <requirement level="standard">Usted debería indicar el editor de datos en su documentación legible por máquina, para que las personas puedan decidir qué tanto confiar en sus datos.</requirement>
                  </option>
                  <option value="spatial">
                     Cobertura espacial/geográfica
                     <requirement level="standard">Usted debería incluir la cobertura geográfica en su documentación legible por máquina, para que las personas puedan entender en dónde aplican sus datos.</requirement>
                  </option>
                  <option value="temporal">
                     Cobertura temporal
                     <requirement level="standard">Usted debería incluir el periodo de tiempo en su documentación legible por máquina, para que las personas entiendan cuándo son aplicables sus datos.</requirement>
                  </option>
                  <option value="theme">
                     Tema(s)
                     <requirement level="standard">Usted debería incluir el tema en su documentación legible por máquina, para que las personas conozcan aproximadamente de qué se tratan sus datos</requirement>
                  </option>
                  <option value="keyword">
                     Palabra(s) clave o etiqueta(s)
                     <requirement level="standard">Usted debería incluir palabras clave o etiquetas legibles por máquina en su documentación, para ayudar a las personas a buscar dentro de los datos de manera efectiva.</requirement>
                  </option>
                  <option value="distribution">
                     Distribución
                  </option>
               </checkboxset>
            </question>
            <if test="this.documentationMetadata().distribution">
               <question id="distributionMetadata"
                         display="La documentación acerca de cada distribución incluye datos legibles por máquina para">
                  ¿Su documentación incluye metadatos legibles por máquina por cada distribución en?
                  <checkboxset>
                     <option value="title">
                        Título
                        <requirement level="standard">Usted debería incluir títulos legibles por máquina dentro de su documentación, para que las personas sepan cómo referirse a cada distribución de datos.</requirement>
                     </option>
                     <option value="description">
                        Descripción
                        <requirement level="standard">Usted debería incluir descripciones legibles por máquina dentro de su documentación, para que las personas conozcan lo que cada distribución de datos contiene.</requirement>
                     </option>
                     <option value="issued">
                        Fecha de lanzamiento
                        <requirement level="standard">Usted debería incluir fechas de lanzamiento legibles por máquina dentro de su documentación, para que las personas conozcan qué tan actual cada distribución es</requirement>
                     </option>
                     <option value="modified">
                        Fecha de modificación
                        <requirement level="standard">Usted debería incluir fechas de última modificación legibles por máquina dentro de su documentación, para que las personas conozcan si su copia de distribución de datos está actualizada.</requirement>
                     </option>
                     <option value="rights">
                        Declaración de derechos
                        <requirement level="standard">Usted debería incluir un enlace a la declaración de derechos aplicables legible por máquina, para que las personas encuentren qué es lo que pueden hacer con una distribución de datos.</requirement>
                     </option>
                     <option value="accessURL" display="Un URL para acceder a los datos">
                        URL para acceder a los datos
                        <help>Estos metadatos deberían ser utilizados cuando sus datos no estén disponibles como una descarga, como una API por ejemplo.</help>
                     </option>
                     <option value="downloadURL" display="Un URL para descargar la base de datos">
                        URL para descargar la base de datos
                     </option>
                     <option value="byteSize">
                        Tamaño en bytes
                     </option>
                     <option value="mediaType">
                        Tipos de medios de descarga
                     </option>
                  </checkboxset>
               </question>
            </if>
         </if>
         <question id="technicalDocumentation"
                   display="La documentación técnica para estos datos está en">
            ¿En dónde está la documentación técnica de los datos?
            <input type="url" placeholder="URL de documentación técnica"/>
            <requirement level="pilot">Usted debería proveer documentación técnica para los datos, para que las personas puedan entender cómo usarlos</requirement>
         </question>
         <question id="vocabulary">
            ¿Los formatos de datos usan vocabularios o esquemas personalizados?
            <yesno required="standard"/>
            <help>Formatos como CSV, JSON, XML o Turtle usan vocabularios o esquemas personalizados que indican qué columnas o propiedades contienen los datos</help>
         </question>
         <if test="this.vocabulary() === 'true'">
            <question id="schemaDocumentationUrl"
                      display="Los vocabularios utilizados en estos datos están documentados en">
               ¿Dónde está la documentación acerca de los vocabularios de sus datos?
               <input type="url" placeholder="URL de la documentación de esquemas"/>
               <requirement level="standard">Usted debería documentar cualquier vocabulario que usted utilizó dentro de sus datos, para que las personas conozcan cómo interpretarlos</requirement>
            </question>
         </if>
         <question id="codelists">
            ¿Existe algún código utilizado en estos datos?
            <yesno required="standard"/>
            <help>Si sus datos utilizan códigos para referirse a cosas como áreas geográficas, categorías de gastos o enfermedades, por ejemplo; estos necesitan ser explicados a las personas</help>
         </question>
         <if test="this.codelists() === 'true'">
            <question id="codelistDocumentationUrl"
                      display="Los códigos en estos datos están documentados en">
               ¿Dónde está documentado algún código en tus datos?
               <input type="url" placeholder="URL documentación de lista de códigos"/>
               <requirement level="standard">Usted debería documentar los códigos utilizados dentro de sus datos, para que las personas sepan como interpretarlos</requirement>
            </question>
         </if>
      </group>
      <group id="support">
         Asistencia
         <help>¿Cómo se comunica usted con las personas que utilizan sus datos?</help>
         <question id="contactUrl"
                   display="Encuentre la manera de contactar a alguien sobre estos datos en">
            ¿En dónde pueden las personas encontrar los contactos necesarios para realizar acerca de estos datos?
            <input type="url" placeholder="URL de contacto"/>
            <help>Ofrezca un URL a una página que describa cómo las personas pueden contactar a alguien si tienen dudas sobre los datos</help>
            <requirement level="pilot">Usted debería proveer información de contactos para que las personas envíen preguntas sobre sus datos también</requirement>
         </question>
         <question id="improvementsContact"
                   display="Encuentre cómo sugerir mejoras a una publicación en">
            ¿En dónde pueden las personas encontrar cómo mejorar la forma en que los datos fueron publicados?
            <input type="url" placeholder="URL de sugerencia de mejoras"/>
            <requirement level="pilot">Usted debería proveer instrucciones acerca de cómo sugerir mejoras a la manera en que usted publica sus datos, para que usted descubra lo que las personas necesitan</requirement>
         </question>
         <question id="dataProtectionUrl"
                   display="Encuentre a dónde enviar preguntas sobre privacidad">
            ¿En dónde pueden las personas encontrar cómo contactar a alguien para preguntar sobre la privacidad?
            <input type="url" placeholder="Documentación de contactos de confidencialidad"/>
            <requirement level="pilot">Usted debería proveer información de contactos para que las personas envíen preguntas sobre la privacidad y la divulgación de detalles personales también</requirement>
         </question>
         <question id="socialMedia">
            ¿Hace uso redes sociales para conectarse con las personas que utilizan sus datos?
            <yesno/>
            <requirement level="standard">Usted debería utilizar redes sociales para llegar a las personas que usan sus datos y descubrir cómo están siendo utilizados sus datos.</requirement>
         </question>
         <if test="this.socialMedia() === 'true'">
            <repeat id="accounts">
               Cuenta
               <question id="account"
                         display="Contacte al curador a través de estas cuentas en redes sociales">
                  ¿En cuáles cuentas de redes sociales las personas pueden llegar a usted?
                  <input type="url" required="required" placeholder="URL de redes sociales"/>
                  <help>De un URL a sus cuentas de redes sociales, como su Twitter o su página de perfil de Facebook</help>
               </question>
            </repeat>
         </if>
         <question id="forum" display="Discuta estos datos en">
            ¿En dónde deberían las personas discutir sobre esta base de datos?
            <input type="url" placeholder="URL de fórums o lista de correos"/>
            <help>De un URL a su fórum o lista de correos donde las personas puedan hablar sobre sus datos</help>
            <requirement level="standard">Usted debería decirle a las personas en dónde pueden discutir sus datos y apoyarse el uno al otro</requirement>
         </question>
         <if test="this.corrected() === 'true'">
            <question id="correctionReporting"
                      display="Encuentre cómo solicitar correcciones de datos en">
               ¿Dónde pueden las personas encontrar cómo solicitar una corrección a sus datos?
               <input type="url" placeholder="URL de instrucciones de corrección"/>
               <help>De un URL donde las personas puedan reportar errores que detectaron en sus datos</help>
               <requirement level="standard">Usted debería proveer instrucciones acerca de cómo las personas pueden reportar errores en sus datos</requirement>
            </question>
            <question id="correctionDiscovery"
                      display="Encuentre cómo obtener notificaciones sobre correcciones de datos en">
               ¿Dónde pueden las personas encontrar cómo obtener notificaciones de las correcciones de sus datos?
               <input type="url" placeholder="URL de notificación de correcciones"/>
               <help>De un URL dónde usted describa cómo son las notificaciones sobre correcciones compartidas con la gente</help>
               <requirement level="standard">Usted debería proveer una lista de correos o una fuente con actualizaciones que las personas puedan utilizar para guardar las copias de sus datos actualizados</requirement>
            </question>
         </if>
         <question id="engagementTeam">
            ¿Tiene usted a alguien que activamente construya una comunidad alrededor de estos datos?
            <yesno/>
            <help more="http://theodi.org/guide/engaging-reusers">Un equipo de compromiso comunitario se involucra a través de redes sociales, blogs; organiza hackdays o competencias para alentar a las personas a usar los datos</help>
            <requirement level="exemplar">Usted debería construir una comunidad de personas alrededor de sus datos para alentar un amplio uso de sus datos</requirement>
         </question>
         <if test="this.engagementTeam() === 'true'">
            <question id="engagementTeamUrl"
                      display="El compromiso comunitario es realizado por">
               ¿Dónde está su página principal?
               <input type="url"
                      placeholder="URL de la página principal del equipo de compromiso comunitario"
                      required="required"/>
            </question>
         </if>
      </group>
      <group id="services">
         Servicios
         <help>¿Cómo ofrece acceso a herramientas que las personas necesitan para trabajar con sus datos?</help>
         <question id="libraries"
                   display="Herramientas que ayudan a utilizar estos datos se enlistan en">
            ¿En dónde enlista herramientas para trabajar con sus datos?
            <input type="url" placeholder="URL de herramientas"/>
            <help>Ofrezca un URL que enliste las herramientas que usted conoce o recomienda, de manera que las personas las utilicen cuando trabajen con sus datos</help>
            <requirement level="exemplar">Usted debería proveer una lista de bibliotecas de software y otras herramientas de lectura disponible, para que las personas puedan rápidamente trabajar con sus datos.</requirement>
         </question>
      </group>
   </group>
</questionnaire>


text:
export function getScrollingPosition () {
    var position = [0, 0]

    if (typeof window.pageYOffset !== 'undefined') {
        return [window.pageXOffset, window.pageYOffset]
    } else if (typeof document.documentElement.scrollTop !== 'undefined' && document.documentElement.scrollTop > 0) {
        return [document.documentElement.scrollLeft, document.documentElement.scrollTop]
    } else if (typeof document.body.scrollTop !== 'undefined') {
        return [document.body.scrollLeft, document.body.scrollTop]
    }

    return position
}


text:
package org.apache.derby.impl.store.raw.xact;

import org.apache.derby.iapi.reference.SQLState;

// This is the recommended super-class for all contexts.
import org.apache.derby.iapi.services.context.ContextImpl;
import org.apache.derby.iapi.services.context.ContextManager;

import org.apache.derby.iapi.services.sanity.SanityManager;

import org.apache.derby.iapi.store.raw.RawStoreFactory;
import org.apache.derby.iapi.store.raw.xact.RawTransaction;

import org.apache.derby.iapi.error.StandardException;

import org.apache.derby.iapi.error.ExceptionSeverity;

/**
The context associated with the transaction.

This object stores the context associated with the raw store transaction
on the stack.  It stores info about the transaction opened within a
context manager (ie. typically a single user) for a single RawStoreFactory.

**/

final class XactContext extends ContextImpl {

	private		RawTransaction	xact;
	private     RawStoreFactory factory;
	private		boolean   abortAll; // true if any exception causes this transaction to be aborted.

	XactContext(ContextManager cm, String name, Xact xact, boolean abortAll, RawStoreFactory factory) {
		super(cm, name);

		this.xact = xact;
		this.abortAll = abortAll;
		this.factory = factory;
		xact.xc = this;	// double link between transaction and myself
	}

	/*
	** Context methods (most are implemented by super-class)
	*/

	/**
		@exception StandardException Standard Derby error policy
	*/
	public void cleanupOnError(Throwable error) throws StandardException {

        if (SanityManager.DEBUG)
        {
    		SanityManager.ASSERT(getContextManager() != null);
    	}

		boolean throwAway = false;

		if (error instanceof StandardException) {
			StandardException se = (StandardException) error;

			if (abortAll) {
				// any error aborts an internal/nested xact and its transaction

				if (se.getSeverity() < ExceptionSeverity.TRANSACTION_SEVERITY)
                {
					throw StandardException.newException(
                        SQLState.XACT_INTERNAL_TRANSACTION_EXCEPTION, error);
                }

				throwAway = true;

			} else {

				// If the severity is lower than a transaction error then do nothing.
				if (se.getSeverity() < ExceptionSeverity.TRANSACTION_SEVERITY)
                {
					return;
                }

				// If the session is going to disappear then we want to close this
				// transaction, not just abort it.
				if (se.getSeverity() >= ExceptionSeverity.SESSION_SEVERITY)
					throwAway = true;
			}
		} else {
			// some java* error, throw away the transaction.
			throwAway = true;
		}

		try {

			if (xact != null) {
				// abort the transaction
				xact.abort();
			}

		} catch (StandardException se) {
			// if we get an error during abort then shut the system down
			throwAway = true;

			// if the system was being shut down anyway, do nothing
			if ((se.getSeverity() <= ExceptionSeverity.SESSION_SEVERITY) &&
				(se.getSeverity() >= ((StandardException) error).getSeverity())) {

				throw factory.markCorrupt(
                    StandardException.newException(
                        SQLState.XACT_ABORT_EXCEPTION, se));
			}

		} finally {

			if (throwAway) {
				// xact close will pop this context out of the context
				// stack
				xact.close();
				xact = null;
			}
		}

	}

	RawTransaction getTransaction() {
		return xact;
	}

	RawStoreFactory getFactory() {
		return factory;
	}

	void substituteTransaction(Xact newTran)
	{
		// disengage old tran from this xact context
		Xact oldTran = (Xact)xact;
		if (oldTran.xc == this)
			oldTran.xc = null;

		// set up double link between new transaction and myself
		xact = newTran;
		((Xact)xact).xc = this;
	}

}


text:
class ReservationsController < ApplicationController
  def index
    reservations = Reservation.all
    @page = {:reservations => reservations}
  end

  def new
    user = User.find_by_id(current_user.id)
    topologies = Topology.all
    reservation = user.reservations.build
    @page = {:reservation => reservation, :user => user, :topologies => topologies}
  end
end


text:
class GameScene : public uth::Scene
{
	void createLayers();
public:
	GameScene(){}
	~GameScene() override{}

	bool Init() override;
	bool DeInit() override;

	void Update(float dt) override;
	//void Draw(RenderTarget& target, RenderAttributes attributes = RenderAttributes()) override;

	std::vector<uth::Layer*> layers;

	pmath::Vec2 position;

	uth::ParticleSystem* particleSystem;

	std::vector<uth::Sound*> sounds;
	float soundTimer;
	bool finished;
	float targetScale;
	float scale;
	float endTime;
};

#endif


text:
<?php

namespace Tests\KrzysztofMazur\ObjectMapper\Mapping\Field\ValueWriter;

use KrzysztofMazur\ObjectMapper\Mapping\Field\ValueReader\MethodValueReader;
use KrzysztofMazur\ObjectMapper\Mapping\Field\ValueWriter\PropertyValueWriter;
use PHPUnit\Framework\TestCase;
use Tests\KrzysztofMazur\ObjectMapper\Fixtures\SimpleObject;

/**
 * @author Krzysztof Mazur <krz@ychu.pl>
 */
class PropertyValueWriterTest extends TestCase
{
    public function testWriteSuccess()
    {
        $writer = new PropertyValueWriter('property1');
        $object = new SimpleObject();
        $writer->write($object, 'ok');

        self::assertEquals('ok', $object->getProperty1());
    }

    public function testNestedWrite()
    {
        $writer = new PropertyValueWriter('property1', new MethodValueReader('getProperty1'));
        $object = new SimpleObject();
        $object->setProperty1(new SimpleObject());
        $writer->write($object, 'ok-nested');

        self::assertEquals('ok-nested', $object->getProperty1()->getProperty1());
    }
}


text:
 Swanix Palettes

    Color palettes library

    https://swanix.org/palettes

---


text:
title: werf helm dependency update
permalink: reference/cli/werf_helm_dependency_update.html
---

{% include /reference/cli/werf_helm_dependency_update.md %}


text:
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */

// solution_1, same as solution_2 and 3
public class Solution {
    public int closestValue(TreeNode root, double target) {
        int a = root.val;
        TreeNode kid = target < root.val ? root.left : root.right;
        if (kid == null) return a;
        int b = closestValue(kid, target); // this is the closestValue of left or right children
        return Math.abs(a - target) < Math.abs(b - target) ? a : b;
    }
}

// solution_2

public class Solution {
    public int closestValue(TreeNode root, double target) {
        int pre = root.val;
        int kid = 0;
        if (target < root.val) {
            if (root.left == null) return pre;
            else kid = closestValue(root.left, target);
        } else {
            if (root.right == null) return pre;
            else kid = closestValue(root.right, target);
        }
        return Math.abs(target - pre) > Math.abs(target - kid) ? kid : pre;
    }
}

// solution_3
public class Solution {
    public int closestValue(TreeNode root, double target) {
        if (target > root.val) {
            if (root.right == null) return root.val;
            if (Math.abs(root.val - target) < Math.abs(getRightMin(root.right) - target)) return root.val;
            return closestValue(root.right, target);
        } else if (target < root.val) {
            if (root.left == null || Math.abs(root.val - target) < Math.abs(getLeftMax(root.left) - target)) return root.val;
            return closestValue(root.left, target);
        } else {
            return root.val;
        }
    }

    private int getRightMin(TreeNode node) {
        while (node.left != null) node = node.left;
        return node.val;
    }

    private int getLeftMax(TreeNode node) {
        while (node.right != null) node = node.right;
        return node.val;
    }
}


text:
var boscode = require('boscode');

var showMovieInfo;

showMovieInfo = function () {
  boscode.display('Movie information for ' + movie.title);
  boscode.display('------------------------------');
  boscode.display('Actors: ' + movie.actors);
  boscode.display('Directors: ' + movie.directors);
  boscode.display('------------------------------');
};


text:
class EventsManager {
 public:
  void EventsLoop(sf::RenderWindow* window);
  void Trigger(GameEvent event);

 private:
};

#endif  // ENGINE_EVENTS_MANAGER_H_


text:
'use strict'

module.exports = {
  additionalProperties: false,
  type: 'object',
  properties: {
    name: 'string',
    settings: {
      type: 'object',
      additionalProperties: true,
      properties: {
        notifications: {
          type: 'boolean',
        },
      },
    },
    tags: {
      array: 'string',
    },
    notes: {
      type: 'array',
      items: {
        type: 'object',
        additionalProperties: false,
        properties: {
          title: 'string',
          likes: 'number',
        },
      },
    },
  },
}


text:
from a_module.b_module.b_file import b_func

def a_func():
    return "a func"