<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_file_ids(self, file_archive, creator=None, status=FileStatus.no_file):
 """Fill the file id arrays from the file lists Parameters file_archive : `FileArchive` Used to look up file ids creator : int A unique key for the job that created these file status : `FileStatus` Enumeration giving current status thse files """

        file_dict = copy.deepcopy(self.file_dict)
        if self.sub_file_dict is not None:
            file_dict.update(self.sub_file_dict.file_dict)

        infiles = file_dict.input_files
        outfiles = file_dict.output_files
        rmfiles = file_dict.temp_files
        int_files = file_dict.internal_files

        if self.infile_ids is None:
            if infiles is not None:
                self.infile_ids = np.zeros((len(infiles)), int)
                filelist = file_archive.get_file_ids(
                    infiles, creator, FileStatus.expected, file_dict)
                JobDetails._fill_array_from_list(filelist, self.infile_ids)
            else:
                self.infile_ids = np.zeros((0), int)
        if self.outfile_ids is None:
            if outfiles is not None:
                self.outfile_ids = np.zeros((len(outfiles)), int)
                filelist = file_archive.get_file_ids(
                    outfiles, creator, status, file_dict)
                JobDetails._fill_array_from_list(filelist, self.outfile_ids)
            else:
                self.outfile_ids = np.zeros((0), int)
        if self.rmfile_ids is None:
            if rmfiles is not None:
                self.rmfile_ids = np.zeros((len(rmfiles)), int)
                filelist = file_archive.get_file_ids(rmfiles)
                JobDetails._fill_array_from_list(filelist, self.rmfile_ids)
            else:
                self.rmfile_ids = np.zeros((0), int)
        if self.intfile_ids is None:
            if int_files is not None:
                self.intfile_ids = np.zeros((len(int_files)), int)
                filelist = file_archive.get_file_ids(
                    int_files, creator, status)
                JobDetails._fill_array_from_list(filelist, self.intfile_ids)
            else:
                self.intfile_ids = np.zeros((0), int)