Ejemplo n.º 1
0
    def read(self, reader):
        rows = iter(reader)

        header = rows.next()
        if self.ref_field_name not in header:
            raise MissingFieldError(self.ref_field_name)
        for field_name in self.transformer.output_field_names:
            if field_name not in header:
                raise MissingFieldError(self.ref_field_name)

        # first field is ID
        field_maps = FieldMaps()
        for input_field_name in self.field_names:
            field_maps.add(input_field_name, input_field_name)
        map_transformer = SimpleTransformer(field_maps)
        map_transformer.bind(header)

        count = 0
        values = dict()
        for row in rows:
            transformed_row = map_transformer.transform(row)
            ref = int(transformed_row[0])
            value = transformed_row[1:]
            values[value] = ref

            count += 1

        if count != len(values):
            raise DuplicateValuesError()
        if count != len(set(values.values())):
            raise DuplicateRefsError()

        self.values = values
        self.next_ref = max(values.values()) + 1
    def read(self, reader):
        rows = iter(reader)

        header = rows.next()
        if self.ref_field_name not in header:
            raise MissingFieldError(self.ref_field_name)
        for field_name in self.transformer.output_field_names:
            if field_name not in header:
                raise MissingFieldError(self.ref_field_name)

        # first field is ID
        field_maps = FieldMaps()
        for input_field_name in self.field_names:
            field_maps.add(input_field_name, input_field_name)
        map_transformer = SimpleTransformer(field_maps)
        map_transformer.bind(header)

        count = 0
        values = dict()
        for row in rows:
            transformed_row = map_transformer.transform(row)
            ref = int(transformed_row[0])
            value = transformed_row[1:]
            values[value] = ref

            count += 1

        if count != len(values):
            raise DuplicateValuesError()
        if count != len(set(values.values())):
            raise DuplicateRefsError()

        self.values = values
        self.next_ref = max(values.values()) + 1
Ejemplo n.º 3
0
class Map(object):

    changed = False

    def __init__(self, map_field_maps, ref_field_name):
        self.transformer = SimpleTransformer(map_field_maps)
        self.ref_field_name = ref_field_name
        self.values = dict()
        self.next_ref = 0

    def read(self, reader):
        rows = iter(reader)

        header = rows.next()
        if self.ref_field_name not in header:
            raise MissingFieldError(self.ref_field_name)
        for field_name in self.transformer.output_field_names:
            if field_name not in header:
                raise MissingFieldError(self.ref_field_name)

        # first field is ID
        field_maps = FieldMaps()
        for input_field_name in self.field_names:
            field_maps.add(input_field_name, input_field_name)
        map_transformer = SimpleTransformer(field_maps)
        map_transformer.bind(header)

        count = 0
        values = dict()
        for row in rows:
            transformed_row = map_transformer.transform(row)
            ref = int(transformed_row[0])
            value = transformed_row[1:]
            values[value] = ref

            count += 1

        if count != len(values):
            raise DuplicateValuesError()
        if count != len(set(values.values())):
            raise DuplicateRefsError()

        self.values = values
        self.next_ref = max(values.values()) + 1

    def write(self, writer):
        writer.writerow(self.field_names)

        for (value, ref) in self.values.iteritems():
            writer.writerow(tuple([ref]) + tuple(value))

    def translate(self, input_row):
        key = self.transformer.transform(input_row)
        ref = self.values.setdefault(key, self.next_ref)
        if ref == self.next_ref:
            self.next_ref += 1
            self.changed = True
        return ref

    def bind(self, header):
        self.transformer.bind(header)

    @property
    def field_names(self):
        return (
            tuple([self.ref_field_name])
            + self.transformer.output_field_names)
class Map(object):

    changed = False

    def __init__(self, map_field_maps, ref_field_name):
        self.transformer = SimpleTransformer(map_field_maps)
        self.ref_field_name = ref_field_name
        self.values = dict()
        self.next_ref = 0

    def read(self, reader):
        rows = iter(reader)

        header = rows.next()
        if self.ref_field_name not in header:
            raise MissingFieldError(self.ref_field_name)
        for field_name in self.transformer.output_field_names:
            if field_name not in header:
                raise MissingFieldError(self.ref_field_name)

        # first field is ID
        field_maps = FieldMaps()
        for input_field_name in self.field_names:
            field_maps.add(input_field_name, input_field_name)
        map_transformer = SimpleTransformer(field_maps)
        map_transformer.bind(header)

        count = 0
        values = dict()
        for row in rows:
            transformed_row = map_transformer.transform(row)
            ref = int(transformed_row[0])
            value = transformed_row[1:]
            values[value] = ref

            count += 1

        if count != len(values):
            raise DuplicateValuesError()
        if count != len(set(values.values())):
            raise DuplicateRefsError()

        self.values = values
        self.next_ref = max(values.values()) + 1

    def write(self, writer):
        writer.writerow(self.field_names)

        for (value, ref) in self.values.iteritems():
            writer.writerow(tuple([ref]) + tuple(value))

    def translate(self, input_row):
        key = self.transformer.transform(input_row)
        ref = self.values.setdefault(key, self.next_ref)
        if ref == self.next_ref:
            self.next_ref += 1
            self.changed = True
        return ref

    def bind(self, header):
        self.transformer.bind(header)

    @property
    def field_names(self):
        return (tuple([self.ref_field_name]) +
                self.transformer.output_field_names)